在 mkdir 命令中使用变量

  • 本文关键字:变量 mkdir 命令 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

问题不在于mkdir命令,而在于变量赋值。~只有在不加引号的情况下才会扩展到您的主目录。如果你引用它,你会得到一个文字波浪号字符。省略双引号。

$ K=~/a/`date +%Y%m%d`
$ echo $K
/home/kurs/a/20190926
$ mkdir $K

引用变量扩展是个好主意,否则带有空格和其他不寻常字符的文件名会让您感到困惑。我建议你写:

$ mkdir "$K"

我怀疑"a"目录不存在。使用带有 -p 选项的命令mkdir -p $K。它将创建所有缺少的中间目录。 更新:根据 Mihir 的建议 - "~"将被视为新目录的名称,它不会使用 HOME 目录作为"a"的父目录,以避免它使用 $HOME 而不是"~"设置您的 K 变量。

最新更新