Mam zmienną o nazwie filepath=/tmp/name
.
Aby uzyskać dostęp do zmiennej, wiem, że mogę to zrobić: $filepath
W moim skrypcie powłoki próbowałem zrobić coś takiego (znaki odwrotne są przeznaczone)
`tail -1 $filepath_newstap.sh`
Ta linia zawodzi, duuh!, Ponieważ zmienna nie jest wywoływana $filepath_newstap.sh
Jak dołączyć _newstap.sh
do nazwy zmiennej?
Zwróć uwagę, że lewy apostrof są przeznaczone do oceny wyrażeń.
set -u
co powoduje przerwanie działania skryptu, jeśli odwołasz się do niezdefiniowanej zmiennej.${}
a cudzysłowami podwójnymi? Czy powinienem preferować jedno nad drugim?Użyj nawiasów klamrowych wokół nazwy zmiennej:
źródło
$filepath_newstap.sh
interpretowany jako${filepath_newstap}.sh
raczej niż zamierzony${filepath}_newstap.sh
, co miałoby rozwiązać problem."$filepath"_foo
i${filepath}_foo
oba rozwiną się do/tmp/name_foo
. Jednak'$filepath'_foo
,"$"filepath_foo
i$"filepath"_foo
że wszyscy ekspansja uniknąć całkowicie. Dlategoexport PATH=$PATH:$addpath
pracuje nad dodaniem:$addpath
(co podlegałoby rozszerzeniu parametrów) doPATH
zmiennej środowiskowej.W Bash:
źródło