什么命令检查Bash shell脚本中是否存在目录?
当前回答
较短形式:
# if $DIR is a directory, then print yes
[ -d "$DIR" ] && echo "Yes"
其他回答
较短形式:
# if $DIR is a directory, then print yes
[ -d "$DIR" ] && echo "Yes"
您可以使用test-d(参见man test)。
-d file如果文件存在并且是目录,则为True。
例如:
test -d "/etc" && echo Exists || echo Does not exist
注意:测试命令与条件表达式[(参见:man[)相同,因此它可以跨shell脚本移植。
[-这是测试内置的同义词,但最后一个参数必须是文字],以匹配开头[。
有关可能的选项或进一步帮助,请检查:
帮助[帮助测试人工测试或人工[
我发现双括号版本的测试使编写逻辑测试更自然:
if [[ -d "${DIRECTORY}" && ! -L "${DIRECTORY}" ]] ; then
echo "It's a bona-fide directory"
fi
根据Jonathan的评论:
如果您想创建目录,但它还不存在,那么最简单的方法是使用mkdir-p创建目录-以及路径上的任何缺失目录-如果目录已经存在,则不会失败,因此您可以使用以下方法一次性完成:
mkdir -p /some/directory/you/want/to/exist || exit 1
DIRECTORY=/tmp
if [ -d "$DIRECTORY" ]; then
echo "Exists"
fi
联机尝试