使用 case/switch 检查文件夹是否存在

使用 case/switch 检查文件夹是否存在

是否可以使用 case 来检查文件夹是否存在?

我有这些文件夹。我需要检查它们是否存在,然后做一些事情,我需要检查 5 个文件夹,如果确实存在,我会在每个文件夹中处理不同的内容。能做到吗?

如果没有,最好的方法是什么?也许是多个 if 语句?

答案1

Case 语句无法像 if/then 那样执行条件评估。案例/开关实际上只能匹配模式,并根据匹配执行特定案例。

潜在的解决方案

[ .. ]我会像这样开始使用。

[ -d /path/to/folder1 ] && echo cmd1
[ -d /path/to/folder2 ] && echo cmd2
[ -d /path/to/folder3 ] && echo cmd3
[ -d /path/to/folder4 ] && echo cmd4
[ -d /path/to/folder5 ] && echo cmd5

如果您之后需要执行更复杂的命令,那么您可能需要切换到正式的 if/then。

if [ -d /path/to/folder1 ]; then
  cmd1;
fi

答案2

当然,您可以使用 glob/case 的混合来做到这一点。

对于单个文件夹,您可以这样做:

set X "$folder_name" "${folder_name}"*/; shift
case $2 in
   "$1/" ) echo "The folder <<${folder_name}>> exists." ;;
   * ) echo "The folder <<${folder_name}>> does not exist." ;;
esac

相关内容