Unix / Linux - Sostituzione della shell

Cos'è la sostituzione?

La shell esegue la sostituzione quando incontra un'espressione che contiene uno o più caratteri speciali.

Esempio

Qui, il valore di stampa della variabile viene sostituito dal suo valore. Contemporaneamente,"\n" è sostituito da una nuova riga -

#!/bin/sh

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

Riceverai il seguente risultato. Qui il file-e opzione abilita l'interpretazione degli escape backslash.

Value of a is 10

Di seguito è riportato il risultato senza -e opzione -

Value of a is 10\n

Le seguenti sequenze di escape che possono essere utilizzate nel comando echo:

Sr.No. Fuga e descrizione
1

\\

barra rovesciata

2

\a

avviso (BEL)

3

\b

backspace

4

\c

sopprimere la nuova riga finale

5

\f

avanzamento modulo

6

\n

nuova linea

7

\r

ritorno a capo

8

\t

scheda orizzontale

9

\v

scheda verticale

Puoi usare il file -E opzione per disabilitare l'interpretazione degli escape backslash (impostazione predefinita).

Puoi usare il file -n opzione per disabilitare l'inserimento di una nuova riga.

Sostituzione dei comandi

La sostituzione dei comandi è il meccanismo mediante il quale la shell esegue un determinato insieme di comandi e quindi sostituisce il loro output al posto dei comandi.

Sintassi

La sostituzione del comando viene eseguita quando un comando viene dato come:

`command`

Quando esegui la sostituzione del comando, assicurati di utilizzare la virgoletta all'indietro, non la virgoletta singola.

Esempio

La sostituzione del comando viene generalmente utilizzata per assegnare l'output di un comando a una variabile. Ciascuno dei seguenti esempi dimostra la sostituzione del comando:

#!/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"

Dopo l'esecuzione, riceverai il seguente risultato:

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

Sostituzione variabile

La sostituzione delle variabili consente al programmatore di shell di manipolare il valore di una variabile in base al suo stato.

Di seguito la tabella per tutte le possibili sostituzioni:

Sr.No. Forma e descrizione
1

${var}

Sostituisci il valore di var .

2

${var:-word}

Se var è nullo o non impostato, parola viene sostituitavar. Il valore di var non cambia.

3

${var:=word}

Se var è nullo o non impostato, var è impostato sul valore diword.

4

${var:?message}

Se var è nullo o non impostato, il messaggio viene stampato sullo standard error. Questo controlla che le variabili siano impostate correttamente.

5

${var:+word}

Se var è impostato, parola viene sostituita da var. Il valore di var non cambia.

Esempio

Di seguito è riportato l'esempio per mostrare vari stati della sostituzione di cui sopra:

#!/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}"

Dopo l'esecuzione, riceverai il seguente risultato:

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