Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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/3/clojure/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
Bash 每30秒检查一次文件是否存在_Bash_Unix_If Statement_While Loop_Terminal - Fatal编程技术网

Bash 每30秒检查一次文件是否存在

Bash 每30秒检查一次文件是否存在,bash,unix,if-statement,while-loop,terminal,Bash,Unix,If Statement,While Loop,Terminal,为什么这样不行?我需要每隔30秒检查一个文件是否存在 STATUS=0 FILENAME="helloworld.file" while [ $STATUS -eq "0" ] do if [ -f $FILENAME ]; then STATUS=1; else sleep 30s; fi done 我不知道,我们问问吧 好的,那么让我们这样做: STATUS=0 FILENAME="helloworld.file" while [ $STATUS -eq "0" ] do

为什么这样不行?我需要每隔30秒检查一个文件是否存在

STATUS=0
FILENAME="helloworld.file"
while [ $STATUS -eq "0" ] do
if [ -f $FILENAME ];
    then STATUS=1;
else
    sleep 30s;
fi

done
我不知道,我们问问吧

好的,那么让我们这样做:

STATUS=0
FILENAME="helloworld.file"
while [ $STATUS -eq "0" ]
do
if [ -f $FILENAME ];
    then STATUS=1;
else
    sleep 30s;
fi

done
我不知道,我们问问吧

好的,那么让我们这样做:

STATUS=0
FILENAME="helloworld.file"
while [ $STATUS -eq "0" ]
do
if [ -f $FILENAME ];
    then STATUS=1;
else
    sleep 30s;
fi

done

你忘了一个
==>

while [ "$STATUS" -eq "0" ]; do
if [ -f "$FILENAME" ]; then 
    STATUS=1
else
    sleep 30
fi
或:

此外,不要忘记使用双引号保护变量,或者使用语法
[[

您还可以简化代码:

while true; do
    [[ -f $FILENAME ]] && break
    sleep 30
done

您忘记了一个
==>

while [ "$STATUS" -eq "0" ]; do
if [ -f "$FILENAME" ]; then 
    STATUS=1
else
    sleep 30
fi
或:

此外,不要忘记使用双引号保护变量,或者使用语法
[[

您还可以简化代码:

while true; do
    [[ -f $FILENAME ]] && break
    sleep 30
done

第3行您忘记了分号:
而[$STATUS-eq“0”];do
@Michal Kordas如果你想到处修改打字错误,请在写文章时修改文章中的所有内容。这不一定特别适用于此编辑,但你最近建议的一些编辑遗漏了文章中的重要问题。@mikeTheLiar,我肯定会做得更彻底。@mikeTheLiarreviews@Michal干杯,谢谢你忘记分号:
while[$STATUS-eq“0”];do
@Michal Kordas如果你想到处修改打字错误,请在写文章时修改文章中的所有内容。这不一定特别适用于此编辑,但你最近建议的一些编辑遗漏了文章中的重要问题。@mikeTheLiar,我肯定会做得更彻底。@mikeTheLiarreviews@Michal干杯,谢谢lcheck
:太酷了!可能在向SO发问之前就应该要求这样做。:-
shellcheck
:太酷了!可能在向SO发问之前就应该要求这样做。:-)