Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何使用while循环检查目录中是否存在两个文件?_Shell_Unix - Fatal编程技术网

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