2016-04-29 91 views
0

我的下面的脚本有什么问题?如果出现条件,出现错误

我不熟悉脚本和尝试简单的脚本。我的脚本出错了。

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

if'if'中的不当空格,即您必须写入'if'“$ START_OUT”==“$ FINISH_OUT”]';总是双引号你的变量,并使用'$()'而不是反引号 – ritesht93

+0

你试图修复错误的努力是什么? – Inian

+0

“不工作”可以有很多含义,抛出的错误-----请提供错误,而不是预期的输出 - 然后提供预期的输出和实际输出 – piyushj

回答

1

if [$START_OUT == $FINISH_OUT]是错误的。注意空间。它应该像

if [ $START_OUT == $FINISH_OUT ]

2

尝试留下的变量if语句,并添加引号空格,这样

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

如果这仍然没有工作正好试试这个,这个工程肯定,如果它仍然给你一个错误,然后使用echo brefore if语句,并检查变量存储的是$START_OUT$FINISH_OUT,因为问题可能在那里,在这样做后给我们反馈:

if test "$START_OUT" = "$FINISH_OUT" 

okayyyy,这是你的问题之一,另一个问题是,当你使用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 
2

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

if [ $START_OUT == $FINISH_OUT ] 

请注意括号周围的间距。对于严格的POSIX合规性,可以使用"="而不是"=="。见here更多细节和注意注释

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

+0

它不工作。我已经试过离开空间 – zeewagon