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语句的页面的链接,也将不胜感激。
答案 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 ']'
在语法上也可以。