尝试mkdir时出现Shell变量问题

时间:2013-04-18 14:01:02

标签: linux bash shell variables

任何想法这个代码有什么问题?

CLIENT_BUILD_DIR="~/Desktop/TempDir/"

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

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

显然目录就在那里,如果我用〜/ Desktop / TempDir /

替换变量,脚本就可以工作了

4 个答案:

答案 0 :(得分:20)

引号阻止〜的扩展。

使用:

CLIENT_BUILD_DIR=~/Desktop/TempDir/

if [ ! -d "$CLIENT_BUILD_DIR" ]
then mkdir "$CLIENT_BUILD_DIR"
fi

答案 1 :(得分:8)

为什么不简单:

mkdir -p "$CLIENT_BUILD_DIR"

注意-p

答案 2 :(得分:6)

在变量中使用时,~字符不会重新解释。

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

答案 3 :(得分:2)

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