如何编写shell脚本?

m3t*_*man 1 unix linux shell

我想编写一个运行的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)

Joh*_*web 6

这一行:

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脚本中的'['和之前']'后面有空格以获得解释.