从包含大量 continue 的 bash 脚本中打印结果

从包含大量 continue 的 bash 脚本中打印结果

我有一个使用 2 个循环的脚本。
第一个循环- 搜索特定文件,如果该文件存在,则执行其他测试。为了避免在服务器上使用大量 CPU,我决定continue在循环中使用。
第二循环- 根据第一个循环打印结果。

脚本或多或少看起来像这样:

for line in `find ./ -type f`; do

# first file test
   if [[ -f /directory/test1 ]]; then
        present=1
        continue
   fi
# second file test
   if [[ -f /directory/test2 ]]; then
        present=1
        continue
   fi
done

if [[ $present = '1' ]]; then
   echo "exists" 
else
   echo "does not exist"
fi

所以基本上,当第一个测试(第一个文件测试或第二个文件测试)有效时,continue将打破循环并开始新的迭代,因此它不会到达脚本的底部。

这将导致第二个测试失败,并且脚本将仅打印包含以下文件的结果不存在

我的问题是:如何打印出所有结果(存在和不存在)。

谢谢。

答案1

为什么不这样写:

if [[ -f /directory/test1 || -f /directory/test2  ]]; then
    echo exists
else
    echo 'does not exist'
fi

另外你应该不解析输出find出于同样的原因你不应该解析ls

相关内容