我想编写一个运行的shell,直到将某些内容写入文件(由另一个进程).我写了这个:
PID_FILE=log.txt
DONE=0
while [$DONE -eq 0]
do
cat $PID_FILE | while read LINE
do
if [$LINE -neq ""]; then
echo "Do stuff here"
$DONE=1
fi
done
done
echo "DONE"
echo "">$PID_FILE
Run Code Online (Sandbox Code Playgroud)
但我明白了
test.sh: 3: test.sh: [0: not found
DONE
Run Code Online (Sandbox Code Playgroud)
这一行:
while [$DONE -eq 0]
Run Code Online (Sandbox Code Playgroud)
方括号周围需要空格:
while [ $DONE -eq 0 ]
Run Code Online (Sandbox Code Playgroud)
就像这个一样:
if [$LINE -neq ""]; then
Run Code Online (Sandbox Code Playgroud)
像这样:
if [ $LINE -neq "" ]; then
Run Code Online (Sandbox Code Playgroud)
当你知道这\[是一个命令时,它会有所帮助.请参阅为什么在Bash脚本中的'['和之前']'后面有空格以获得解释.