【问题标题】:Use of variable in mkdir command [duplicate]在 mkdir 命令中使用变量 [重复]
【发布时间】:2020-01-27 04:08:39
【问题描述】:

我正在尝试使用带有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

【问题讨论】:

  • 在发布输出前使用LANG=C mkdir $K
  • 在这种情况下更喜欢使用“$HOME”而不是~。此外,如果您的主目录中尚不存在a,请传递-p 标志。

标签: bash


【解决方案1】:

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

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

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

$ mkdir "$K"

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 2016-09-07
      相关资源
      最近更新 更多