我的下面的脚本出了什么问题?
我是脚本和尝试简单脚本的新手。我的脚本出错了。
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
答案 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 ]