AIX - bash script



我正在尝试在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.

预先感谢tiago

aix有一个真正的bourne shell,居住在/bin/sh中,不确定/usr/bin/sh,但希望这也是伯恩·贝壳。

将您的脚本标题(#SHEBANG!)更改为

 #!/usr/bin/bash

which bash

的结果

ihth

您使用的是bash特定语法,但使用sh调用脚本,该脚本具有更多的功能。由于您想使用sh,因此可以使用checkbashismsshellcheck之类的工具来帮助发现不可支配的语法。

直接问题是function foo() { ..; }不是符合POSIX的函数定义,您应该删除关键字function并仅使用foo() { ..; }

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

相关内容

  • 没有找到相关文章

最新更新