AIX 6.1如果在Bash脚本中找不到命令

时间:2014-09-19 20:05:30

标签: bash if-statement aix

typeset -i STARTTIME=`expr $STARTHOUR \* 60 \* 60 + $STARTMINUTE \* 60 + $STARTSECOND`
echo $STARTTIME
typeset -i ENDTIME=`expr $ENDHOUR \* 60 \* 60 + $ENDMINUTE \* 60 + $ENDSECOND`
echo $ENDTIME

typeset -i ELAPSED=`expr $ENDTIME - $STARTTIME`
    typeset -i PREVIOUSTIME=`cat previouscompletion${wf}.txt`

    if [$ELAPSED -ne $PREVIOUSTIME]; then
    echo $ELAPSED > previouscompletion${wf}.txt
    fi

上面是一个if语句,我试图在AIX 6.1服务器上的bash脚本中运行。

当我尝试运行它时它给我的是回音中的正确数字,但是一旦它碰到了if语句就会呱呱叫给我

./wf_zabbix_test.sh: line 46: [8: command not found

我已经在AIX上使用了case块,但只有在比较字符串变量时,我才能进行任何这些比较以使用整数。遗憾的是,AIX手册中的信息非常缺乏,而我所能使用的所有内容似乎都更倾向于在其他Linux发行版中使用。

任何帮助,即使只是一个指向如何在AIX中执行darn if语句的页面的链接,也将不胜感激。

1 个答案:

答案 0 :(得分:0)

[不是if的语法,而是命令的语法。 ]是(并且必须是)其最后一个参数(如果您将;放在同一行上,这就是为什么需要then的原因 - 就像您所做的那样。 与任何命令一样,它返回一个值,if只需查看此返回值即可执行then(返回0)或else(否则)。

此外,作为任何命令,命令和第一个参数($ELAPSED)之间必须至少有一个空格。

关于$PREVIOUSTIME],您在$ PREVIOUSTIME之后连接一个字符],因此命令[只能看到一个参数而不是2($PREVIOUSTIME])。 / p>

只需添加空格。

if [ $ELAPSED -ne $PREVIOUSTIME ]
then
    echo $ELAPSED > previouscompletion$wf.txt
fi

为了清楚起见并显示这是一个参数:if [ $ELAPSED -ne $PREVIOUSTIME "]"if [ $ELAPSED -ne $PREVIOUSTIME ']'在语法上也可以。