
Le shell utilise différents caractères particuliers pour effectuer ses propres traitements ($ pour la substitution, > pour la redirection de la sortie standard, * comme caractère générique, etc.). Pour utiliser ces caractères particuliers comme de simples caractères, il est nécessaire de les protéger de
l'interprétation du shell. Trois mécanismes sont utilisables :
Ce caractère protège le caractère qui suit immédiatement le caractère .
Exemple :
$ echo * => le caractère * perd sa signification de caractère générique
*
$ echo *
tata toto
$
$ echo => le deuxième caractère perd sa signification de caractère de protection
$ echo N'oublie pas !
N'oublie pas !
$
Le caractère permet également d’ôter la signification de la touche Entrée. Cela a pour effet d’aller à la ligne sans qu’il y ait exécution de la commande. En effet, après saisie d’une commande, l’utilisateur demande au shell l’exécution de celle-ci en appuyant sur cette touche.
Annuler l’interprétation de la touche Entrée autorise l’utilisateur à écrire une longue commande sur plusieurs lignes.
Dans l’exemple ci-dessous, le shell détecte que la commande interne echo n’est pas terminée ; par conséquent, bash affiche une chaîne d’appel différente matérialisée par un caractère > suivi d’un caractère espace invitant l’utilisateur à continuer la saisie de sa commande.
Exemple :
Tous les caractères de chaîne sauf $ ` " sont protégés de l'interprétation du shell. Cela signifie, par exemple, qu’à l’intérieur d’une paire de guillemets le caractère $ sera quand même interprété comme une substitution, etc.
Exemple :
$ echo "< * $PWD * >"
< * /home/tony * >
$
$ echo "< * "$PWD" * > "
< * "/home/tony" * >
$
Entre une paire d’apostrophes (′), aucun caractère de chaîne (sauf le caractère ') n'est interprété.
Exemple :
$ echo '< * $PWD * >'
< * $PWD * >
$
Syntaxe :
${#paramètre}
Cette syntaxe est remplacée par la longueur de la chaîne de caractères contenue dans paramètre. Ce dernier peut être une variable, un paramètre spécial ou un paramètre de position.
Exemple :
$ echo $PWD
/home/tony
$ echo ${#PWD}
14 => longueur de la chaîne /home/tony
$
$ set "au revoir"
$ echo ${#1}
9 => la valeur de $1 étant au revoir, sa longueur est 9
$
$ ls >/dev/null
$
$ echo ${#?}
1 => contenue dans $?, la valeur du code de retour de ls
$ => est 0, par conséquent la longueur est 1