根据这个答案:Unix Bash Shell Programming if directory exists,我试图检查目录是否存在。但是,当我运行它时,我得到line 1: [-d: command not found
。我在这里做错了什么?
if [-d "~/.ssl"]; then
echo '~/.ssl directory already exists'
else
sudo mkdir ~/.ssl/
fi
答案 0 :(得分:18)
[-d
不是命令。
[ -d
是带有-d选项的test
命令。
空间很重要。
(另外,[
命令需要以]
参数结束,该参数同样必须通过空格与其他参数分开。)
这就是问题的症结所在。但是还有其他一些问题:
"$HOME/.ssl"
? (〜和“$ HOME”之间存在细微差别,但对大多数用途来说无关紧要。)老实说,你真正需要的只是:
if mkdir -p ~/.ssl; then
# Do stuff with new directory
else
# Handle failure (but keep in mind `mkdir` will have its own error output)
fi