【问题标题】:Shell variable issue when trying to mkdir尝试 mkdir 时的 Shell 变量问题
【发布时间】:2013-04-11 16:39:47
【问题描述】:

你知道这段代码有什么问题吗?

CLIENT_BUILD_DIR="~/Desktop/TempDir/"

if [ ! -d $CLIENT_BUILD_DIR ]
then
   {
      mkdir $CLIENT_BUILD_DIR
   }
fi

我收到错误:mkdir: ~/Desktop: 没有这样的文件或目录。

如果我用 ~/Desktop/TempDir/ 替换变量,显然目录就在那里并且脚本可以工作

【问题讨论】:

  • 还有一个小技巧,你可以将代码简化为[ -d $CLIENT_BUILD_DIR ] || mkdir $CLIENT_BUILD_DIR,最好加上|| echo "Error trying to create dir: $CLIENT_BUILD_DIR" :)
  • 为什么不直接使用mkdir -p?你不必检查if not exist then create

标签: linux bash shell variables


【解决方案1】:

~ 字符在用于变量时不会重新解释。

您可以改用CLIENT_BUILD_DIR="$HOME/Desktop/TempDir/"

【讨论】:

    【解决方案2】:

    引号防止 ~ 的扩展。

    用途:

    CLIENT_BUILD_DIR=~/Desktop/TempDir/
    
    if [ ! -d "$CLIENT_BUILD_DIR" ]
    then mkdir "$CLIENT_BUILD_DIR"
    fi
    

    【讨论】:

      【解决方案3】:

      mkdir ${CLIENT_BUILD_DIR} 可以。如果目录已经存在,则不会创建。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-18
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        相关资源
        最近更新 更多