在 ksh 函数中使用 EOF

Using EOF in ksh function

我正在编写一个脚本来将命令传递到控制台并将输出重定向到日志以供分析。这是我现在的脚本。

#!/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  | awk '!=""{print }'`
echo $status
if [ $status -eq "RUNNING" ]
then
    echo "GG process  is running"
    exit 0
}
gg_sci
check_st test

如果我将 2 个函数放入 2 个不同的脚本中,这个脚本就可以工作。当我将它们放入一个脚本时,出现错误

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

调试后,我确定 EOF 正在 } 中读取以关闭函数。我不确定我做错了什么,如果这是脚本中唯一的东西,EOF 函数可以正常工作。

您缺少 fi 来关闭您的 if

此外,-eq 用于检查数字是否相等,比较字符串使用 =:

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