if条件时出错

时间:2016-04-29 09:38:37

标签: linux bash shell

我的下面的脚本出了什么问题?

我是脚本和尝试简单脚本的新手。我的脚本出错了。

START_OUT = `grep -c "Start Report" jeevagan/test_scripts/log.txt`
FINISH_OUT = `grep -c "Finished Report" jeevagan/test_scripts/log.txt`
if [$START_OUT == $FINISH_OUT]
then
echo "All good"
else
echo "Warning!!!Monitor Logs"
fi

3 个答案:

答案 0 :(得分:2)

尝试在if语句中留空格并在变量上添加引号,例如

if [ "$START_OUT" == "$FINISH_OUT" ]

如果这仍然无法正常运行,请确保这样做,如果它仍然给你一个错误,那么在if语句之前使用echo并检查已存储的$START_OUT$FINISH_OUT个变量,因为问题可能存在,在你这样做后给我们反馈:

 if  test "$START_OUT" = "$FINISH_OUT"
好吧,这是你的一个问题,另一个问题是当你使用grep并尝试将其添加到变量中时你留下了一个空间...... 我会重写你的代码,请复制并粘贴它。就像你拥有它一样,就像你调用START_OUT命令那显然不存在....并告诉我它是否有效。

START_OUT=`grep -c "Start Report" jeevagan/test_scripts/log.txt`
FINISH_OUT=`grep -c "Finished Report" jeevagan/test_scripts/log.txt`
if  test "$START_OUT" = "$FINISH_OUT"
then
echo "All good"
else
echo "Warning!!!Monitor Logs"
fi

答案 1 :(得分:2)

bash/sh对空间非常敏感。你想要

if [ $START_OUT == $FINISH_OUT ]

注意括号周围的间距。可以使用"="代替"=="来严格遵守POSIX。有关详情,请参阅here并注明评论

  

在脚本中,通常使用if语句的不同部分   良好分离。

答案 2 :(得分:1)

if [$START_OUT == $FINISH_OUT]错了。照顾空间。它应该像

if [ $START_OUT == $FINISH_OUT ]