如何检查Shell脚本中是否存在目录

时间:2020-01-09 10:40:04  来源:igfitidea点击:

如何检查Linux或Unix等操作系统下的Shell脚本中是否存在目录?
如何检查类Unix系统上的Shell脚本中是否存在目录?
要检查目录是否存在于shell脚本中并且是目录,请使用以下语法:

`[ -d "/path/to/dir" ] && echo "Directory /path/to/dir exists."`

或者

`[ ! -d "/path/to/dir" ] && echo "Directory /path/to/dir DOES NOT exists."`

或将它们一次性合并:

`[ -d "/path/to/dir" ] && echo "Directory /path/to/dir exists." || echo "Error: Directory /path/to/dir does not exists."`

以下版本还检查符号链接:

`[ -d "/path/to/dir" && ! -L "/path/to/dir" ] && echo "Directory /path/to/dir exists." || echo "Error: Directory /path/to/dir exists but point to $(readlink -f /path/to/dir)."`

或者

`[ -d "/path/to/dir" && ! -h "/path/to/dir" ] && echo "Directory /path/to/dir exists." || echo "Error: Directory /path/to/dir exists but point to $(readlink -f /path/to/dir)."`

最后,您可以使用传统的if..else..fi bash语法,如下所示:

if [ -d "/path/to/dir" ] 
then
    echo "Directory /path/to/dir exists." 
else
    echo "Error: Directory /path/to/dir does not exists."
fi

或者

### Check if a directory does not exist ###
if [ ! -d "/path/to/dir" ] 
then
    echo "Directory /path/to/dir DOES NOT exists." 
    exit 9999 # die with error code 9999
fi

总结

使用以下命令检查文件/目录类型并比较值:

  • -L" FILE":FILE存在并且是一个符号链接(与-h相同)
  • -h" FILE":FILE存在并且是一个符号链接(与-L相同)
  • -d" FILE":FILE存在并且是一个目录
  • -w" FILE":文件存在并被授予写权限