检查字符串是否代表 BASH 中的有效路径

检查字符串是否代表 BASH 中的有效路径

我目前有一个字符串目录,如下所示: DESTDIR="/var/files/mydir/filedir/"

请注意,该目录确实存在。我确定了这一点。

我需要检查该目录是否已存在,或者是否需要创建它。我目前正在使用以下方法执行此操作:

if [ -d  $DESTDIR ]; then
    echo the directory exists!
else
    echo the directory does not exist!
fi

而且,即使该目录确实存在 - 我将名称复制并粘贴到脚本中的变量中 - 它始终会转到该else语句。不仅如此,当我ls $DESTDIR在脚本中执行此操作时,我会收到no such file or directory错误。但是,当我ls $DESTDIR从命令行运行时,我得到了预期的结果。

我尝试过替换$DESTDIR"$DESTDIR",但仍然没有得到预期的结果。

答案1

你可以这样做mkdir -p "$DESTDIR"——-p如果错误已经存在,该选项将抑制错误。

答案2

从这里看起来$DESTDIR(又名/var/files/mydir/file)实际上是/file/而不是/directory/。该-d测试询问您是否有 /directory/。检查输出ls -ld $DESTDIR以确认。如果$DESTDIR确实是一个文件,那么-d测试正在做正确的事情——只是不是你所期望的。

相关内容