如何将变量作为输入列表,用for循环实现文件存在性检查?
Bash 文件存在性检查循环优化
方法一:直接传入变量列表
把$A、$B、$C作为循环输入列表,注意每个变量用双引号包裹,避免文件名含空格时被错误拆分:
A="file name1.txt" B="file name2.txt" C="file name3.txt" for file in "$A" "$B" "$C"; do if [[ ! -f "$file" ]]; then echo "file $file not exist" fi done
方法二:使用数组存储(推荐)
如果后续需要添加更多文件,用数组管理更灵活,数组展开时同样要保留双引号:
# 用数组存储所有要检查的文件 files=( "file name1.txt" "file name2.txt" "file name3.txt" ) for file in "${files[@]}"; do if [[ ! -f "$file" ]]; then echo "file $file not exist" fi done
关键说明
- 必须保留双引号
"$file":你的文件名包含空格,shell会把无引号的空格当作分隔符,导致文件路径被拆分成多个部分,无法正确识别目标文件。 - 两种方法都能完全替代原来的重复
if判断逻辑,实现批量检查。
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

