Bash [-d:未找到命令
根据这个答案:,我试图检查目录是否存在。但是,当我运行这个时,我得到Bash [-d:未找到命令,bash,shell,Bash,Shell,根据这个答案:,我试图检查目录是否存在。但是,当我运行这个时,我得到第1行:[-d:command not found。我在这里做错了什么 if [-d "~/.ssl"]; then echo '~/.ssl directory already exists' else sudo mkdir ~/.ssl/ fi 这不是命令 [ -d 是带有-d选项的命令 空间问题 (另外,[命令需要以]参数结尾,该参数同样必须用空格与其他参数分隔。) 这是问题的症结所在。不过,还有几个其他问题:
第1行:[-d:command not found
。我在这里做错了什么
if [-d "~/.ssl"]; then
echo '~/.ssl directory already exists'
else
sudo mkdir ~/.ssl/
fi
这不是命令
[ -d
是带有-d选项的命令
空间问题
(另外,[
命令需要以]
参数结尾,该参数同样必须用空格与其他参数分隔。)
这是问题的症结所在。不过,还有几个其他问题:
“$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
谁否决了这个?这是完全正确的。顺便说一下,
[-d”~/.ssl]
正在寻找一个包含文本~
字符的目录名。您想要“$HOME/.ssl”
或[-d~/.ssl]
没有引号。顺便说一句,你不需要检查。只需使用mkdir-p
…呃,等等,为什么你只想创建一个已经存在的目录?这里有些可疑…@kojiro-Oops,是的,我刚刚意识到我搞错了。另外,你不应该使用sudo来处理mkdir。有~/.ssh
与您的$HOME
(这正是您在执行sudo
操作时得到的结果--~/.ssh
由root
拥有)不同的用户拥有,这是自找麻烦。
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