是否可以使用 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