Bash & Shell

De BlaxWiki
Aller à la navigationAller à la recherche

[Doc très interessante en anglais sur les quote en shell]

[Doc Général pour débutant en shell]

  • Ordre de lecture et d'interprétation.

Il faut savoir que le shell lit plusieurs fois la ligne avant d'exécuter la commande. Cette lecture se fait dans l'ordre suivant :

 1. substition de variables : le shell remplace les variables par leurs valeurs
 2. substitution de commandes : le shell remplace une variable par son contenu qui est le résultat d'une commande
 3. interprétation des pipes et des redirections
 4. expansion des noms de fichiers : interprétation des caractères spéciaux pour compléter un nom de fichier et/ou de répertoire
 5. exécution de la commande 
  • Dans un script shell ou dans une console :
 $? 	C'est la valeur de sortie de la dernière commande. Elle vaut 0 si la commande s'est déroulée sans pb.
 $0 	Cette variable contient le nom du script
 $1-$9 	Les (éventuels) premiers arguments passés à l'appel du script
 $# 	Le nombre d'arguments passés au script 
 $* 	La liste des arguments à partir de $1
 $$ 	le n° PID du processus courant
 $! 	le n° PID du processus fils
  • Utilisation des quotes
\c             Take character c literally.
`cmd`          Run cmd and replace it in the line of code with its output.
"whatever"     Take whatever literally, after first interpreting $, `...`, \
'whatever'     Take whatever absolutely literally.

Example:
  match=`ls *.bak`        #Puts names of .bak files into shell variable match.
  echo \*                 #Echos * to screen, not all filename as in:  echo *
  echo '$1$2hello'        #Writes literally $1$2hello on screen.
  echo "$1$2hello"        #Writes value of parameters 1 and 2 and string hello.
  • Dans les man pages ou les aides :
- Tout texte isolé, sans [] (crochet), {} (accolade), <> (chevron), est à taper tel qu'il apparaît
- le texte entre crochets [] est facultatif
- le texte entre accolades {} contient les choix à faire.
- les choix sont séparées par | (pipe) ou par une virgule , commande -{a|b} veut dire commande -a ou commande -b mais pas commande -ab
- le texte entre chevrons <> doit être remplacé par le texte approprié
- les parenthèses (...), utilisées pour les paramètres tels que les noms de fichiers
- les crochets [] et les chevrons <> peuvent être combinés   [<nom_fichier>] - facultatif mais si vous les utilisez alors il faut écrire le nom du fichier
- les crochets [] et les accolades {} peuvent être combinés   [--option={a|b|c}]