[LINUX] Umgang mit Zitaten in [bash]

Hintergrund

Ich bin ein neuer Ingenieur, der gerade angefangen hat, Bash zu schreiben. Ich codiere ** "Oh, hier einfache Anführungszeichen? Doppelte? Ist es notwendig, es überhaupt zu umgeben? Nun, es ist egal, ob es sich bewegt ..." ** Ich mache mir darüber immer Sorgen, deshalb habe ich beschlossen, es wieder zu organisieren.

Fazit

OK mit der folgenden Erkennung. Details werden später einzeln erklärt. コメント 2020-08-17 221526.png

Einfaches Anführungszeichen ''

Wenn Sie eine Zeichenfolge in einfache Anführungszeichen setzen, verliert jedes Zeichen in der Zeichenfolge seine spezielle Bedeutung und wird als wörtliche Bedeutung interpretiert.

# $HOME ist eine spezielle Shell-Variable, die das Home-Verzeichnis des Benutzers festlegt, der die Shell ausführt.

$ echo '$HOME' #Mit einfachen Anführungszeichen umgeben
$HOME #Wie es ist$Ausgabe als HOME

$ echo "$HOME" #In doppelte Anführungszeichen setzen
/c/Users/guest.name #Wird auf den Wert einer Shell-Variablen erweitert

$ echo '*' #Mit einfachen Anführungszeichen umgeben
* #Wie es ist*Wird ausgegeben

$ echo * #Zitiere nichts
bin doc src #Erweitert auf den Dateinamen im aktuellen Verzeichnis

Doppelte Anführungszeichen ""

Wenn Sie eine Zeichenfolge in doppelte Anführungszeichen setzen, verlieren die meisten Zeichen ihre besondere Bedeutung, ähnlich wie einfache Anführungszeichen. Die speziellen Bedeutungen von \ $ und `bleiben jedoch erhalten, sodass die Parametererweiterung und die Befehlssubstitution durchgeführt werden. ** Es scheint besser, "\ $ variables" und "\ $ (Befehlsersetzung)" in doppelte Anführungszeichen zu setzen, um unerwartetes Verhalten zu verhindern. ** **.

#Parametererweiterung
$ var='*** hello  world ***' #Mit einer Reihe von Räumen*String mit

$ echo "$var" #In doppelte Anführungszeichen setzen
*** hello  world *** #Richtig angezeigt

$ echo $var #Nicht in doppelte Anführungszeichen setzen
bin doc src hello world bin doc src #Das Leerzeichen wird als Trennzeichen interpretiert und der Dateiname des aktuellen Verzeichnisses wird vorher und nachher erweitert.

#Befehl ersetzen
$ user='$(whoami)' #Mit einfachen Anführungszeichen umgeben
$ echo "$user"
$(whoami) #Nur als Zeichenfolge interpretiert

$ user="$(whoami)" #In doppelte Anführungszeichen setzen
$ echo "$user"
guest.name #Das Ergebnis des whoami-Befehls wird zugewiesen

Backslash \

Wenn Sie einen Backslash vor ein Zeichen setzen, verliert das eine Zeichen unmittelbar nach dem \ seine spezielle Bedeutung und wird als wörtliche Bedeutung interpretiert.

$ echo \$HOME  # $Setzen Sie einen Schrägstrich vor
$HOME #Wie es ist$Ausgabe als HOME

$ echo $HOME #Ich muss einen Back Slash hinzufügen
/c/Users/guest.name #Wird auf den Wert einer Shell-Variablen erweitert

$ echo \*  # *Setzen Sie einen Schrägstrich vor
*  #Wie es ist*Wird ausgegeben

$ echo *  #Ich muss einen Back Slash hinzufügen
bin doc src  #Erweitert auf den Dateinamen im aktuellen Verzeichnis

Referenz: Takenori Yamamori "[Überarbeitete 3. Ausgabe] Shell Script Basic Reference ── #! / Bin / sh kann dies" Technical Review Company (2018/11/14)

Recommended Posts

Umgang mit Zitaten in [bash]
Umgang mit JSON-Dateien in Python
Umgang mit Zeichencodes von Dateien in IronPython
[Bash / Linux] Hinweise bei Problemen
Bash in Jupyter
Umgang mit Json in Python
Fehlerbehandlung in PythonBox
Umgang mit Hexadezimal in Python3
Umgang mit absoluten Pfaden von os.path.join
[Persönliches Memo] Automatischer Abschluss der Bash
Teilweise bei Problemen
Umgang mit spärlichen Matrizen in Scipy
Liste der Knoten in Diagrammen
Objektäquivalenzbeurteilung in Python
Python> Umgang mit 2D-Arrays
Umgang mit Python auf Mac
Vergleich der Datenrahmenbehandlung in Python (Pandas), R, Pig
Erweiterung der Bash-Variablenparameter
Implementierung der schnellen Sortierung in Python
Behandlung des HSV-Farbraums unten und oben in OpenCV
Relative URL-Verarbeitung in Python
Stellen Sie Firewalld einfach in mehreren Zonen ein
Bildpixel-Manipulation in Python
Umgang mit spärlichen Attributen in einer Baumstruktur (Python)
Beurteilung von Feiertagen einschließlich Feiertagen mit Bash
Fehler geteilt durch 0 Behandlung von ZeroDivisionError
Die Geschichte der Teilnahme an AtCoder
Implementierung der Login-Funktion in Django
Zeitdelta in Python 2.7-Serie teilen
Funktionen von pd.NA in Pandas 1.0.0 (rc0)
Behandeln Sie Daten in Linux-Bash-Befehlen
MySQL-automatische Escape-Funktion von Parametern in Python
Installieren Sie GoLang in goenv von anyenv
Implementierung eines Lebensspiels in Python
Audio-Wellenform-Anzeige in Python
Zusammenfassung verschiedener Operationen in Tensorflow
Muster der Verantwortungskette in Java
Die Geschichte des "Lochs" in der Akte
Behandlung von Zeitzonen in Python (Datum / Uhrzeit, Pytz)
Das Gesetz der Zahlen in Python
Implementierung der ursprünglichen Sortierung in Python
Reversibles Verwürfeln von Ganzzahlen in Python
Datenverarbeitung 2 Analyse verschiedener Datenformate
Zeigen Sie den vollständigen Pfad (absoluten Pfad) einer Datei in einem Verzeichnis in Linux Bash an
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten