下面的命令有什么问题?
$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
然而
$ mkdir ~/Music/240118
作品。
从来没有想过在使用 bash 多年后我会问这样的问题......
答案1
变量扩展后,波形符扩展不起作用,因此如果您在 中放入文字波形符var
,它最终将成为 的文字波形符mkdir
。 (请注意错误消息中如何mkdir
包含文字波浪号,而不是主目录的实际路径。)
而且,由于您将波浪号放在作业中的引号中,因此它也不会在那里扩展。如果它不在引号中,则:
$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
当然,您始终可以使用$HOME
:
$ var="$HOME/Music"; echo $var
/home/me/Music