1

(別のプロセスによって)何かがファイルに書き込まれるまで実行されるシェルを作成したいと思います。私はこれを書いた:

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 に答える