Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




按照这个答案: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

最佳答案

[-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
    

    关于bash - [-d : command not found,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22768533/

    10-14 18:08
    查看更多