为什么这不起作用?我需要每隔30秒检查一次文件是否存在。
STATUS=0
FILENAME="helloworld.file"
while [ $STATUS -eq "0" ] do
if [ -f $FILENAME ];
then STATUS=1;
else
sleep 30s;
fi
done
答案 0 :(得分:1)
我不知道,让我们问shellcheck!
In file line 3:
while [ $STATUS -eq "0" ] do
^-- SC1010: Use semicolon or linefeed before 'do' (or quote to make it literal).
好的,那就让我们这样做:
STATUS=0
FILENAME="helloworld.file"
while [ $STATUS -eq "0" ]
do
if [ -f $FILENAME ];
then STATUS=1;
else
sleep 30s;
fi
done
答案 1 :(得分:1)
您忘记了;
==>
while [ "$STATUS" -eq "0" ]; do
if [ -f "$FILENAME" ]; then
STATUS=1
else
sleep 30
fi
或者:
while [ "$STATUS" -eq "0" ]
do
if [ -f "$FILENAME" ]
then
STATUS=1
else
sleep 30
fi
done
此外,请不要忘记使用双引号保护变量或使用语法[[
。
Here is a reminder about the necessity (or not) to protect your variables with double quotes
您还可以简化代码:
while true; do
[[ -f $FILENAME ]] && break
sleep 30
done