Shell 如何使用while循环检查目录中是否存在两个文件?
在此,我的代码:Shell 如何使用while循环检查目录中是否存在两个文件?,shell,unix,Shell,Unix,在此,我的代码: while [ -f $load_extract_process ] || [ -f $Sr_details_update_process ] do sleep 3s echo "mango" done echo "completed" 我想检查是否存在任何一个触发器。在这种情况下,请转到睡眠模式,否则打印完成。您的示例代码只缺少一个字符,a!。您希望循环继续,直到其中一个文件存在,而不是在它存在时。因此,以下代码将起作用: while ! [ -f /tmp/a1 ] |
while [ -f $load_extract_process ] || [ -f $Sr_details_update_process ]
do
sleep 3s
echo "mango"
done
echo "completed"
我想检查是否存在任何一个触发器。在这种情况下,请转到睡眠模式,否则打印完成。您的示例代码只缺少一个字符,a!。您希望循环继续,直到其中一个文件存在,而不是在它存在时。因此,以下代码将起作用:
while ! [ -f /tmp/a1 ] || [ -f /tmp/a2 ]; do sleep 1; echo sleeping; done
而不是贝壳的!和| |,您也可以使用test中的参数[只是test的别名:
注意!现在是如何由test处理的[而不是由shell处理的,-a表示和。
在我看来,您可以决定这两个实现中哪一个对您来说更清晰,这是第二个。您的第二个选项对我有用,谢谢:while[-f/tmp/a1-o-f/tmp/a2];do sleep 1;echo sleep;do do do do sleep 1;echo sleep;do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do do-
while [ ! -f /tmp/a1 -a ! -f /tmp/a2 ]; do sleep 1; echo sleeping; done