【问题标题】:I need to test for a directory in unix我需要在 unix 中测试一个目录
【发布时间】:2014-04-20 02:13:59
【问题描述】:

我正在制作一个简单的shell脚本,我需要测试一个目录,如果存在,删除它并创建一个新的,如果它不存在,则创建它。

这是我目前所拥有的:

if ( ! -d /numbers ); then
        echo "does not exist, creating directory"
        sleep 3s
        mkdir numbers
        echo "Directory created."
else
        echo "Removing existing directory and creating a new one"
        sleep 2s
        rmdir numbers
        echo "directory removed"
        sleep 1s
        mkdir numbers
        echo "Directory created"
fi

但这给了我一个错误信息:

myscript.sh: line 17: -d: command not found

如果目录存在:

mkdir: cannot create directory `numbers': File exists

【问题讨论】:

标签: bash shell unix ssh


【解决方案1】:

您需要在 if 语句中使用方括号进行测试。您还使用了 rmdir,它仅在目录为空时才有效。如果要删除它及其内容,请使用rm -r numbers

可能是这样的:

if [ ! -d numbers ]; then
        echo "does not exist, creating directory"
        sleep 3s
        mkdir numbers
        echo "Directory created."
else
        echo "Removing existing directory and creating a new one"
        sleep 2s
        rm -r numbers
        echo "directory removed"
        sleep 1s
        mkdir numbers
        echo "Directory created"
fi

【讨论】:

  • 这不起作用,它永远不会进入 else 语句,如果目录在那里它仍然会出于某种原因运行 if 语句
  • 它检查是否存在的目录是/numbers。 numbers 目录是在文件系统的根目录中还是在运行该脚本的同一目录中?
  • 与其运行的目录相同,我将其更改为“$numbers”而不是 /numbers
  • 尝试在我更新的答案中运行脚本。我刚刚删除了 if 语句中的 /。
猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多