首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AIX - bash脚本

AIX - bash脚本
EN

Stack Overflow用户
提问于 2014-01-30 23:09:49
回答 2查看 1.4K关注 0票数 0

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

代码语言:javascript
复制
#!/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
-----------------------

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

代码语言:javascript
复制
[root@bpmnprd01]/root/health_check# ./servers_check.sh
./servers_check.sh[7]: 0403-057 Syntax error at line 7 : `(' is not expected.

我在谷歌上搜索这个,我在subroutine.But上找到了一些没有"()“的例子,我得到了这个:

代码语言:javascript
复制
[root@bpmnprd01]/root/health_check# ./servers_check.sh
./servers_check.sh[30]: 0403-057 Syntax error at line 33 : `StatusCheck' is not expected.

提亚戈,提前感谢

EN

回答 2

Stack Overflow用户

发布于 2014-01-30 23:25:17

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

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

代码语言:javascript
复制
 #!/usr/bin/bash

或者是which bash的结果

IHTH

票数 0
EN

Stack Overflow用户

发布于 2014-01-31 00:24:32

您使用的是特定于bash的语法,但是使用sh调用脚本,它的功能更有限。由于您希望使用sh,因此可以使用checkbashismsshellcheck之类的工具来帮助揭示不可移植的语法。

直接的问题是,function foo() { ..; }不是一个符合POSIX的函数定义,您应该去掉关键字function,只使用foo() { ..; }

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21460142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档