Gautam
Gautam

Reputation: 21

Using EOF in ksh function

I am writing a script to pass commands to a console and redirect the output to a log for analysis. This is the script I have now.

#!/bin/ksh
gg_sci(){
$GG_HOME/ggsci <<EOF > /home/org/obey.log
obey /home/org/mon.oby
EOF
}
check_st(){
status=`cat obey.log | grep -i $1 | awk '$2!=""{print $2}'`
echo $status
if [ $status -eq "RUNNING" ]
then
    echo "GG process $1 is running"
    exit 0
}
gg_sci
check_st test

This script works if I put the 2 functions into 2 different scripts. When I put them into one script, I get an error

ksh: 0403-057 Syntax error: `}' is not expected.

After debugging, I've determined the EOF is reading in the } that closes the function. I'm not sure what I'm doing wrong, the EOF function works correctly if that's the only thing in the script.

Upvotes: 0

Views: 1622

Answers (1)

mata
mata

Reputation: 69082

You're missing a fi to close your if.

Also, -eq is used to check for numeric equality, to compare strings use =:

check_st(){
    status=`cat obey.log | grep -i $1 | awk '$2!=""{print $2}'`
    echo "$status"
    if [ "$status" = "RUNNING" ]
    then
        echo "GG process $1 is running"
        exit 0
    fi
}

Upvotes: 3

Related Questions