Unix / Linux - Shell-Anführungsmechanismen

In diesem Kapitel werden wir detailliert auf die Shell-Anführungsmechanismen eingehen. Wir werden zunächst die Metazeichen diskutieren.

Die Metazeichen

Unix Shell bietet verschiedene Metazeichen, die bei der Verwendung in einem beliebigen Shell-Skript eine besondere Bedeutung haben und die Beendigung eines Wortes bewirken, sofern nicht anders angegeben.

Zum Beispiel, ? stimmt mit einem einzelnen Zeichen überein, während Dateien in einem Verzeichnis und einem Verzeichnis aufgelistet werden *entspricht mehr als einem Zeichen. Hier ist eine Liste der meisten Shell-Sonderzeichen (auch Metazeichen genannt) -

* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab

Ein Zeichen kann zitiert werden (dh für sich selbst stehen), indem ihm ein vorangestellt wird \.

Beispiel

Das folgende Beispiel zeigt, wie a gedruckt wird * oder ein ? - -

#!/bin/sh

echo Hello; Word

Bei der Ausführung erhalten Sie folgendes Ergebnis:

Hello
./test.sh: line 2: Word: command not found

shell returned 127

Versuchen wir nun, ein Anführungszeichen zu verwenden -

#!/bin/sh

echo Hello\; Word

Bei der Ausführung erhalten Sie folgendes Ergebnis:

Hello; Word

Das $ Das Zeichen ist eines der Metazeichen, daher muss es angegeben werden, um eine besondere Behandlung durch die Shell zu vermeiden.

#!/bin/sh

echo "I have \$1200"

Bei der Ausführung erhalten Sie folgendes Ergebnis:

I have $1200

In der folgenden Tabelle sind die vier Arten von Zitaten aufgeführt:

Sr.Nr. Zitat & Beschreibung
1

Single quote

Alle Sonderzeichen zwischen diesen Anführungszeichen verlieren ihre besondere Bedeutung.

2

Double quote

Die meisten Sonderzeichen zwischen diesen Anführungszeichen verlieren mit diesen Ausnahmen ihre besondere Bedeutung -

  • $
  • `
  • \$
  • \'
  • \"
  • \\
3

Backslash

Jedes Zeichen, das unmittelbar auf den Backslash folgt, verliert seine besondere Bedeutung.

4

Back quote

Alles zwischen Anführungszeichen wird als Befehl behandelt und ausgeführt.

Die einfachen Zitate

Stellen Sie sich einen Echo-Befehl vor, der viele spezielle Shell-Zeichen enthält.

echo <-$1500.**>; (update?) [y|n]

Ein Backslash vor jedes Sonderzeichen zu setzen ist mühsam und macht das Lesen der Zeile schwierig -

echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

Es gibt eine einfache Möglichkeit, eine große Gruppe von Zeichen zu zitieren. Setzen Sie ein einfaches Anführungszeichen (') am Anfang und am Ende der Zeichenfolge -

echo '<-$1500.**>; (update?) [y|n]'

Zeichen in einfachen Anführungszeichen werden so zitiert, als ob sich vor jedem Zeichen ein Backslash befindet. Damit wird der Echo-Befehl ordnungsgemäß angezeigt.

Wenn ein einzelnes Anführungszeichen in einer auszugebenden Zeichenfolge angezeigt wird, sollten Sie nicht die gesamte Zeichenfolge in einfache Anführungszeichen setzen, sondern einen Backslash (\) wie folgt verwenden:

echo 'It\'s Shell Programming

Die doppelten Anführungszeichen

Versuchen Sie, das folgende Shell-Skript auszuführen. Dieses Shell-Skript verwendet ein einfaches Anführungszeichen -

VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

Bei der Ausführung erhalten Sie folgendes Ergebnis:

$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]

Dies musste nicht angezeigt werden. Es ist offensichtlich, dass einfache Anführungszeichen die Substitution von Variablen verhindern. Wenn Sie Variablenwerte ersetzen und Anführungszeichen wie erwartet funktionieren lassen möchten, müssen Sie Ihre Befehle wie folgt in doppelte Anführungszeichen setzen:

VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

Bei der Ausführung erhalten Sie folgendes Ergebnis:

ZARA owes <-$1500.**>; [ as of (07/02) ]

Doppelte Anführungszeichen entfernen die besondere Bedeutung aller Zeichen mit Ausnahme der folgenden:

  • $ zur Parametersubstitution

  • Backquotes für die Befehlsersetzung

  • \$ buchstäbliche Dollarzeichen zu ermöglichen

  • \` um wörtliche Anführungszeichen zu aktivieren

  • \" um eingebettete doppelte Anführungszeichen zu aktivieren

  • \\ um eingebettete Backslashes zu aktivieren

  • Alle Anderen \ Zeichen sind wörtlich (nicht speziell)

Zeichen in einfachen Anführungszeichen werden so zitiert, als ob sich vor jedem Zeichen ein Backslash befindet. Dies hilft bei der korrekten Anzeige des Echo-Befehls.

Wenn ein einzelnes Anführungszeichen in einer auszugebenden Zeichenfolge angezeigt wird, sollten Sie nicht die gesamte Zeichenfolge in einfache Anführungszeichen setzen, sondern einen Backslash (\) wie folgt verwenden:

echo 'It\'s Shell Programming'

Die Backquotes

Einen beliebigen Shell-Befehl dazwischen setzen backquotes führt den Befehl aus.

Syntax

Hier ist die einfache Syntax zum Einfügen einer beliebigen Shell command zwischen den Anführungszeichen -

var=`command`

Beispiel

Das date Der Befehl wird im folgenden Beispiel ausgeführt und das erzeugte Ergebnis wird in der Variablen DATA gespeichert.

DATE=`date`

echo "Current Date: $DATE"

Bei der Ausführung erhalten Sie folgendes Ergebnis:

Current Date: Thu Jul  2 05:28:45 MST 2009