Tato otázka zde již obsahuje odpovědi :Proč se vlnovka (~) nerozšíří uvnitř dvojitých uvozovek?
(4 odpovědi)
Uzavřeno před 3 lety.
Linux
(4 odpovědi)
Uzavřeno před 3 lety.
Co je špatného na níže uvedených příkazech?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Nicméně
$ mkdir ~/Music/240118
funguje.
Nikdy jsem si nemyslel, že po letech používání bash budu klást takové otázky…
Přijatá odpověď:
Rozbalení vlnovky po rozbalení proměnné nefunguje, takže pokud do var
vložíte doslovnou vlnovku , skončí to jako doslovná vlnovka k mkdir
. (Všimněte si, jak chybová zpráva z mkdir
má v sobě doslovnou vlnovku, nikoli skutečnou cestu vašeho domovského adresáře.)
A protože tildu vložíte do uvozovek v úkolu, nerozšíří se ani tam. Pokud není v uvozovkách, ano:
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Samozřejmě můžete vždy použít pouze $HOME
místo toho:
$ var="$HOME/Music"; echo $var
/home/me/Music