Unix / Linux - Shell Substitution

Was ist Substitution?

Die Shell führt eine Ersetzung durch, wenn sie auf einen Ausdruck stößt, der ein oder mehrere Sonderzeichen enthält.

Beispiel

Hier wird der Druckwert der Variablen durch ihren Wert ersetzt. Gleiche Zeit,"\n" wird durch eine neue Zeile ersetzt -

#!/bin/sh

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

Sie erhalten folgendes Ergebnis. Hier das-e Option aktiviert die Interpretation von Backslash-Escapezeichen.

Value of a is 10

Es folgt das Ergebnis ohne -e Option -

Value of a is 10\n

Die folgenden Escape-Sequenzen, die im Echo-Befehl verwendet werden können -

Sr.Nr. Flucht & Beschreibung
1

\\

Backslash

2

\a

Alarm (BEL)

3

\b

Rücktaste

4

\c

unterdrückende Zeilenumbrüche unterdrücken

5

\f

Formularvorschub

6

\n

Neue Zeile

7

\r

Wagenrücklauf

8

\t

horizontale Registerkarte

9

\v

vertikale Lasche

Du kannst den ... benutzen -E Option zum Deaktivieren der Interpretation der Backslash-Escapezeichen (Standard).

Du kannst den ... benutzen -n Option zum Deaktivieren des Einfügens einer neuen Zeile.

Befehlsersetzung

Die Befehlssubstitution ist der Mechanismus, mit dem die Shell einen bestimmten Satz von Befehlen ausführt und dann deren Ausgabe anstelle der Befehle ersetzt.

Syntax

Die Befehlsersetzung wird ausgeführt, wenn ein Befehl als - angegeben wird

`command`

Stellen Sie beim Auswechseln des Befehls sicher, dass Sie das Backquote und nicht das einfache Anführungszeichen verwenden.

Beispiel

Die Befehlssubstitution wird im Allgemeinen verwendet, um die Ausgabe eines Befehls einer Variablen zuzuweisen. Jedes der folgenden Beispiele zeigt die Befehlssubstitution -

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

Bei der Ausführung erhalten Sie folgendes Ergebnis:

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

Variable Substitution

Durch das Ersetzen von Variablen kann der Shell-Programmierer den Wert einer Variablen basierend auf ihrem Status bearbeiten.

Hier ist die folgende Tabelle für alle möglichen Substitutionen -

Sr.Nr. Form & Beschreibung
1

${var}

Ersetzen Sie den Wert von var .

2

${var:-word}

Wenn var null oder nicht gesetzt ist, wird das Wort ersetztvar. Der Wert von var ändert sich nicht.

3

${var:=word}

Wenn var null oder nicht gesetzt ist, wird var auf den Wert von gesetztword.

4

${var:?message}

Wenn var null oder nicht gesetzt ist, wird die Nachricht als Standardfehler gedruckt. Dadurch wird überprüft, ob die Variablen richtig eingestellt sind.

5

${var:+word}

Wenn var gesetzt ist, wird var durch ein Wort ersetzt. Der Wert von var ändert sich nicht.

Beispiel

Das folgende Beispiel zeigt verschiedene Zustände der obigen Substitution -

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

Bei der Ausführung erhalten Sie folgendes Ergebnis:

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