这里是我的代码:
while [ -f $load_extract_process ] || [ -f $Sr_details_update_process ]
do
sleep 3s
echo "mango"
done
echo "completed"
我要检查是否存在任何触发器。在这种情况下,进入睡眠模式,否则打印“完成”。
答案 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
表示和。
您可以决定两种实现中的哪一种更清晰(我认为是第二种)。