如何在变量fl不是有效文件或目录时显示提示,现有判断代码存在问题如何修正
问题原因
你现有代码的逻辑存在布尔运算错误:! -f "$fl" || ! -d "$fl" 的语义是「路径不是普通文件 或者 不是目录」,由于任意路径不可能同时是普通文件和目录,这个判断条件会永远成立,不管路径是否存在都会输出错误提示。
修复方案
方案1:直接用存在性判断(最简洁通用)
用-e参数直接判断路径是否存在,不管类型是普通文件、目录、软链接等都算有效路径,完全匹配你的需求:
if [[ ! -e "$fl" ]]; then printf '%s\n' "$fl: File or Directory does not exist" fi
方案2:严格限定仅普通文件/目录两种类型
如果你需要排除软链接、设备文件等其他类型的路径,只允许普通文件和目录两种有效类型,可以把原代码的||改为&&,语义变为「既不是普通文件 也不是 目录」时才触发提示:
if [[ ! -f "$fl" && ! -d "$fl" ]]; then printf '%s\n' "$fl: File or Directory does not exist" fi
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

