尝试mkdir时出现Shell变量问题

hax*_*ode 11 linux variables bash shell

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

CLIENT_BUILD_DIR="~/Desktop/TempDir/"

if [ ! -d $CLIENT_BUILD_DIR ]
then
   {
      mkdir $CLIENT_BUILD_DIR
   }
fi
Run Code Online (Sandbox Code Playgroud)

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

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

Ben*_*ela 22

引号阻止〜的扩展.

使用:

CLIENT_BUILD_DIR=~/Desktop/TempDir/

if [ ! -d "$CLIENT_BUILD_DIR" ]
then mkdir "$CLIENT_BUILD_DIR"
fi
Run Code Online (Sandbox Code Playgroud)


tom*_*ahh 8

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

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


ani*_*ane 7

为什么不简单:

mkdir -p "$CLIENT_BUILD_DIR"
Run Code Online (Sandbox Code Playgroud)

注意-p.

  • 如果未解释变量中的〜,则会在当前目录中创建名为〜的目录。 (2认同)