2016-06-25 15 views
1
myDir = 'apple' 

Wenn ich die obige Variable habe, welche Funktionalität kann ich verwenden, um sie innerhalb eines Befehls zu verwenden? (Ich vermute, es ist eine Art von Substitution - also würde ich gerne wissen, wie es heißt, wenn ja)Bash-Ersatzvariable im Befehl

Wie könnte ich die obige Variable zu einem ls /home/applefruit, wie offensichtlich funktioniert ls /home/$myDirfruit funktioniert nicht.

Antwort

2

Zunächst ist Ihre Variablendeklaration nicht richtig. Es dürfen keine Räume um = in Erklärung sein:

myDir='apple' 

Nun ls /home/$myDirfruit nicht funktioniert, weil myDirfruit als Variablennamen nur myDir stattdessen behandelt wird. Sie müssen {} verwenden, um die Variablennamen zu umschließen, wenn der Name von gültigen Variablennamen konstituierende Zeichen gefolgt wird:

würde erweitert werden
ls /home/${myDir}fruit 

:

ls /home/applefruit 

Auch wenn Sie Leerzeichen in Variablennamen haben z.B myDir='foo bar', verwenden Sie Anführungszeichen um Variable:

ls /home/"${myDir}"fruit 
+2

Nur der Vollständigkeit halber sind die Zitate ausreichend, wenn unter Angabe '$ myDir' allein die Klammern fallen. 'ls/home /" $ myDir "Frucht. Im Allgemeinen sind die geschweiften Klammern die kanonische Methode, um einen Parameter zu erweitern. Sie können jedoch weggelassen werden, wenn der Name des Parameters eindeutig ist. – chepner

Verwandte Themen