我正在尝试将变量与mkdir
一起使用,但不会创建新目录。如果我尝试不使用变量,则效果很好。
[kurs@localhost ~]$ K="~/a/`date +%Y%m%d`"
[kurs@localhost ~]$ echo $K
~/a/20190926
[kurs@localhost ~]$ mkdir $K
mkdir: nie można utworzyć katalogu „~/a/20190926”: Nie ma takiego pliku ani katalogu
[kurs@localhost ~]$
[kurs@localhost ~]$ mkdir ~/a/20190926
答案 0 :(得分:1)
问题不是mkdir
命令,而是变量分配。 ~
仅在不加引号的情况下才会扩展到您的主目录。如果引用它,则会得到一个原义的波浪号字符。省略双引号。
$ K=~/a/`date +%Y%m%d`
$ echo $K
/home/kurs/a/20190926
$ mkdir $K
最好用引号括起变量扩展名,否则用空格和其他不寻常字符引起文件名混乱。我建议您写:
$ mkdir "$K"
答案 1 :(得分:0)
我怀疑“ a”目录不存在。将命令与-p选项mkdir -p $K
一起使用。它将创建所有缺少的中间目录。
更新:按照Mihir的建议-“〜”将被视为新目录的名称,它不会将HOME目录用作“ a”的父目录,以避免使用$ HOME而不是“〜”来设置K变量