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

在Bash脚本中找不到AIX 6.1 If命令,bash,if-statement,aix,Bash,If Statement,Aix,上面是我试图在AIX6.1服务器上的bash脚本中运行的if语句 当我尝试运行它时,它给了我的是回声中的正确数字,但一旦它点击if语句,它就会发出嘎嘎声并给我提示 typeset -i STARTTIME=`expr $STARTHOUR \* 60 \* 60 + $STARTMINUTE \* 60 + $STARTSECOND` echo $STARTTIME typeset -i ENDTIME=`expr $ENDHOUR \* 60 \* 60 + $ENDMINUTE \* 60

上面是我试图在AIX6.1服务器上的bash脚本中运行的if语句

当我尝试运行它时,它给了我的是回声中的正确数字,但一旦它点击if语句,它就会发出嘎嘎声并给我提示

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
我已经在AIX上使用了case块,但只有在比较字符串变量时才使用,但我无法使用整数进行这些比较。遗憾的是,AIX手册严重缺乏信息,我在Google上找到的所有东西似乎都更多地用于其他Linux发行版


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

[
不是
if
的语法,而是命令
]
是(并且必须是)它的最后一个参数(这就是为什么如果你把
放在同一行,那么在它后面必须加一个
,就像你做的那样。 与任何命令一样,它返回一个值,
,如果
只是查看此返回值来执行
,则
(返回0)或
其他
(否则)

此外,与任何命令一样,该命令和第一个参数(
$appeased
)之间必须至少有一个空格

关于
$PREVIOUSTIME]
,您将在$PREVIOUSTIME之后连接一个字符],因此命令
[
只会看到一个参数,而不是2个(
$PREVIOUSTIME
]

只需添加空格

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

只是为了清楚地说明这是一个参数:
如果[$eassed-ne$PREVIOUSTIME”]“
如果[$eassed-ne$PREVIOUSTIME']”
在语法上也是可以的。

如果[$eassed-ne$PREVIOUSTIME],你需要在
[
周围留出空格。
如果[$eassed-ne$PREVIOUSTIME];然后
添加空格对我来说很有效,脚本其余部分中的其他if语句也在运行。是否有一个好地方可以进一步研究语法与命令之间的差异?因为我完全不知道括号除了包含逻辑测试之外还有什么。谢谢!唯一的链接我可以给你一个答案:(它的其他页面也很有趣,我喜欢这些例子)。我从中学到了很多东西。@Kyle:试试,它也应该通过键入
info bash
来使用。
if [ $ELAPSED -ne $PREVIOUSTIME ]
then
    echo $ELAPSED > previouscompletion$wf.txt
fi