Random42
Random42

Reputation: 9159

How to write shell script?

I want to write a shell that runs until something is written to a file (by another process). I have written this:

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

but I get

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

Upvotes: 1

Views: 316

Answers (1)

johnsyweb
johnsyweb

Reputation: 141810

This line:

while [$DONE -eq 0]

Needs spaces around the square brackets:

while [ $DONE -eq 0 ]

As does this one:

if [$LINE -neq ""]; then

Like this:

if [ $LINE -neq "" ]; then   

It helps when you know that \[ is a command. See Why should be there a space after '[' and before ']' in the Bash Script for an explanation.

Upvotes: 6

Related Questions