Unix / Linux - Substitution de Shell

Qu'est-ce que la substitution?

Le shell effectue une substitution lorsqu'il rencontre une expression contenant un ou plusieurs caractères spéciaux.

Exemple

Ici, la valeur d'impression de la variable est remplacée par sa valeur. En même temps,"\n" est remplacé par une nouvelle ligne -

#!/bin/sh

a=10
echo -e "Value of a is $a \n"

Vous recevrez le résultat suivant. Ici le-e L'option permet l'interprétation des échappements de barre oblique inverse.

Value of a is 10

Voici le résultat sans -e option -

Value of a is 10\n

Les séquences d'échappement suivantes qui peuvent être utilisées dans la commande echo -

Sr.No. Évasion et description
1

\\

barre oblique inverse

2

\a

alerte (BEL)

3

\b

retour arrière

4

\c

supprimer la nouvelle ligne de fin

5

\f

flux de formulaire

6

\n

nouvelle ligne

sept

\r

retour chariot

8

\t

onglet horizontal

9

\v

onglet vertical

Vous pouvez utiliser le -E option pour désactiver l'interprétation des échappements de la barre oblique inverse (par défaut).

Vous pouvez utiliser le -n option pour désactiver l'insertion d'une nouvelle ligne.

Substitution de commande

La substitution de commandes est le mécanisme par lequel le shell exécute un ensemble donné de commandes, puis substitue leur sortie à la place des commandes.

Syntaxe

La substitution de commande est effectuée lorsqu'une commande est donnée comme -

`command`

Lorsque vous effectuez la substitution de commande, assurez-vous que vous utilisez le guillemet arrière et non le caractère guillemet simple.

Exemple

La substitution de commande est généralement utilisée pour affecter la sortie d'une commande à une variable. Chacun des exemples suivants illustre la substitution de commande -

#!/bin/sh

DATE=`date`
echo "Date is $DATE"

USERS=`who | wc -l`
echo "Logged in user are $USERS"

UP=`date ; uptime`
echo "Uptime is $UP"

Lors de l'exécution, vous recevrez le résultat suivant -

Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

Substitution de variable

La substitution de variable permet au programmeur shell de manipuler la valeur d'une variable en fonction de son état.

Voici le tableau suivant pour toutes les substitutions possibles -

Sr.No. Forme et description
1

${var}

Remplacez la valeur de var .

2

${var:-word}

Si var est nul ou non défini, le mot est remplacé parvar. La valeur de var ne change pas.

3

${var:=word}

Si var est nul ou non défini , var prend la valeur deword.

4

${var:?message}

Si var est nul ou non défini, le message est affiché en erreur standard. Cela vérifie que les variables sont définies correctement.

5

${var:+word}

Si var est défini, le mot est remplacé par var. La valeur de var ne change pas.

Exemple

Voici l'exemple pour montrer divers états de la substitution ci-dessus -

#!/bin/sh

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"

unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"

echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

Lors de l'exécution, vous recevrez le résultat suivant -

Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set

3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix