2016-04-29 69 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

相關問題