1

我想编写一个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

但我明白了

test.sh: 3: test.sh: [0: not found
DONE
4

1 回答 1

6

这一行:

while [$DONE -eq 0]

方括号周围需要空格:

while [ $DONE -eq 0 ]

和这个一样:

if [$LINE -neq ""]; then

像这样:

if [ $LINE -neq "" ]; then   

当您知道这\[是一个命令时,它会有所帮助。请参阅为什么在 Bash 脚本中的 '[' 之后和 ']' 之前应该有一个空格以获得解释。

于 2013-02-28T08:38:22.507 回答