2016-06-29 77 views
-2

正如標題所述。如果在Bash中聲明簡單。我一直在試圖弄清爲什麼這個循環不起作用,現在我還沒有拿出任何東西兩天。洞察力將不勝感激。Bash if/else循環錯誤

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") 

CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ] 
then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ] 
    COLOR="yellow" 
else 
    COLOR="red" 
fi 

COLOR var是由我正在使用的系統預設的東西。紅色/黃色/綠色都是正確的,但是我的語法或邏輯都是問題,儘管我一直在努力確定。謝謝!

編輯:我的錯。清晨和問題充滿了錯字。我修好了他們。錯誤如下,

syntax error near unexpected token `else' 
`  else' 
+3

我看不到你的for循環。代碼上的語法高亮顯示應該已經是可疑的了:在第一行找到字符串的結尾引號。另外「它不工作」是不夠的信息。 –

+2

請貼上你得到的錯誤! – Fazlin

+0

我在腳本的第一行('date'命令)看不到結尾''' – Fazlin

回答

0

你有一些錯誤,這可能有助於

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") 
CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ] 
then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ] 
then 
    COLOR="yellow" 
else 
    COLOR="green" 
fi 
+1

你忘了'fi' :) – Fazlin

+0

是的,謝謝。 :) – sozkul

+0

關閉,但仍然無法正常工作。 – SaintHax

1

你忘了報價,和然後。

declare -r TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S,%3N") # missing " here 

CHECK="$(grep -c "$TIMESTAMP" /var/log/host/logname.log)" 
if [ "$CHECK" -eq 0 ]; then 
    COLOR="green" 
elif [ 0 -lt "$CHECK" ] && [ "$CHECK" -le 5 ]; then # missing then was here 
    COLOR="yellow" 
else 
    COLOR="red" 
fi 
+0

啊!我沒有意識到在使用else/if後我需要第二個「then」。解決了我的問題。非常感謝! – Setarcos

+0

順便說一下,我會親自爲您的只讀變量保留大寫字母,小寫字母表示其他變量。稍後解決問題/維護腳本時,這是一個方便的慣例。 – SaintHax

+0

現在選擇一個答案作爲正確的答案 - 我不在乎哪個,它只是SO代表:-) – SaintHax