在mkdir命令中使用变量

时间:2019-09-26 20:24:36

标签: bash

我正在尝试将变量与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

2 个答案:

答案 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变量