AIX - bash脚本

时间:2014-01-30 15:09:49

标签: bash websphere aix

我正在尝试在AIX中实现一个小的bash脚本,但是我遇到了一些问题。你能找到一个例子。我有另一个问题,如果我想将脚本添加到Crontab,我想从IBM调用serverStatus.sh会有问题,如何避免这个问题。

#!/usr/bin/sh

WAS_HOME="/usr/IBM/WebSphere/AppServer/profiles/bpmnprd01/"

function StatusCheck()
{

$WAS_HOME/bin/serverStatus.sh BPM.AppTarget.bpmnprd01.0 -username admin -password admin
status=$(cat /usr/IBM/WebSphere/AppServer/profiles/bpmnprd01/logs/BPM.AppTarget.xxxxx/serverStatus.log| awk '{ if (NF > 0) { last = $NF } } END { print last }' "$@")
text="STOPPED"
if  [[ $text == $status ]]
    then
    echo "OK"
else
    echo "NOK"
fi
}

function start()
{
StatusCheck
}
start
-----------------------

当我尝试执行上面的脚本时,我收到以下错误:

[root@bpmnprd01]/root/health_check# ./servers_check.sh
./servers_check.sh[7]: 0403-057 Syntax error at line 7 : `(' is not expected.

...之后我在google上搜索,我在子程序中找到了一些没有“()”的例子。但我得到了这个:

[root@bpmnprd01]/root/health_check# ./servers_check.sh
./servers_check.sh[30]: 0403-057 Syntax error at line 33 : `StatusCheck' is not expected.

先谢谢 蒂亚戈

2 个答案:

答案 0 :(得分:0)

AIX有一个真正的bourne shell,它位于/ bin / sh中,对/ usr / bin / sh不确定,但也希望它也是Bourne shell。

将脚本标题行(#shebang!)更改为

 #!/usr/bin/bash

which bash

的结果

IHTH

答案 1 :(得分:0)

您正在使用bash特定语法,但使用sh调用脚本,其功能有限。由于您要使用sh,因此您可以使用checkbashismsshellcheck等工具来帮助发现不可移植的语法。

当前的问题是function foo() { ..; }不是POSIX兼容的函数定义,您应该删除关键字function并仅使用foo() { ..; }

您的shell可能也缺少[[ ]],在这种情况下,您应该使用[ ]而不是=而不是==