如何使用while循环检查目录中是否存在两个文件?

时间:2019-04-29 07:25:14

标签: shell unix

这里是我的代码:

while [ -f  $load_extract_process ] || [ -f $Sr_details_update_process ]
do
sleep 3s
echo "mango"
done
echo "completed"

我要检查是否存在任何触发器。在这种情况下,进入睡眠模式,否则打印“完成”。

1 个答案:

答案 0 :(得分:1)

您的示例代码仅缺少一个字符,即!。您希望循环继续直到其中一个文件存在,而不是持续存在。因此,以下代码将起作用:

while ! [ -f /tmp/a1 ] || [ -f /tmp/a2 ]; do sleep 1; echo sleeping; done

您还可以使用测试中的参数来代替shell的!||[只是test的别名):

while [ ! -f /tmp/a1 -a ! -f /tmp/a2 ]; do sleep 1; echo sleeping; done

请注意,!现在是如何由测试([)而不是外壳程序处理的,而-a表示。 您可以决定两种实现中的哪一种更清晰(我认为是第二种)。