mkdir: 无法创建目录: 没有那个文件或目录

ka3*_*3ak 9 bash

下面的命令有什么问题?

$ var1="~/Music/$(date +%d%m%y)"
$ echo "$var1"
~/Music/240118
$ mkdir "$var1"
mkdir: cannot create directory ‘~/Music/240118’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然而

$ mkdir ~/Music/240118
Run Code Online (Sandbox Code Playgroud)

作品。

没想到在使用 bash 多年后我会问这样的问题......

ilk*_*chu 16

变量展开后波浪号扩展不起作用,因此如果您将文字波浪号放入var,它将最终作为文字波浪号到mkdir。(请注意错误消息中如何mkdir包含文字波浪号,而不是主目录的实际路径。)

而且,由于您在作业中将波浪号放在引号中,因此它也不会在那里展开。如果它不在引号中,它会:

$ var="~/Music"; echo $var
~/Music
$ var=~/"Music"; echo $var
/home/me/Music
Run Code Online (Sandbox Code Playgroud)

当然,您始终可以$HOME改为使用:

$ var="$HOME/Music"; echo $var
/home/me/Music
Run Code Online (Sandbox Code Playgroud)