在Bash脚本中找不到AIX 6.1 If命令
上面是我试图在AIX6.1服务器上的bash脚本中运行的if语句 当我尝试运行它时,它给了我的是回声中的正确数字,但一旦它点击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
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