Ich habe eine Variable namens filepath=/tmp/name
.
Um auf die Variable zuzugreifen, weiß ich, dass ich dies tun kann: $filepath
In meinem Shell-Skript habe ich versucht, so etwas zu tun (die Backticks sind beabsichtigt)
`tail -1 $filepath_newstap.sh`
Diese Zeile schlägt fehl, duuh!, Weil die Variable nicht aufgerufen wird $filepath_newstap.sh
Wie hänge ich _newstap.sh
an den Variablennamen an?
Bitte beachten Sie, dass Backticks für die Ausdrucksbewertung vorgesehen sind.
set -u
was dazu führt, dass das Skript abgebrochen wird, wenn Sie auf eine undefinierte Variable verweisen.${}
und doppelten Anführungszeichen? Soll ich eins dem anderen vorziehen?Verwenden Sie geschweifte Klammern um den Variablennamen:
quelle
$filepath_newstap.sh
interpretiert wurde , was das Problem lösen würde.${filepath_newstap}.sh
${filepath}_newstap.sh
"$filepath"_foo
und${filepath}_foo
würde beide erweitern/tmp/name_foo
. Allerdings'$filepath'_foo
,"$"filepath_foo
und$"filepath"_foo
würde alles vermeiden Expansion vollständig. Aus diesem Grund wird die Umgebungsvariableexport PATH=$PATH:$addpath
hinzugefügt:$addpath
(was einer Parametererweiterung unterliegen würde)PATH
.In Bash:
quelle