-1
我在線上關注了Lynda.com課程。我的Bash腳本有什麼錯誤? (第43行:在意外標記「elif」附近出現語法錯誤)
我正在努力學習所有我能做的事情,但我仍然在命令替換,數組和陣列中掙扎,並且有時會出現If循環。
#!/bin/bash
MLOG="/var/log/mail.log"
SLOG="/var/log/syslog"
echo "Which log(s) do you want to see? "
echo "[1] Head Of Mail.log?"
echo "[2] Head Of Syslog?"
echo "[3] Tail Of Mail.log?"
echo "[4] Tail Of Syslog?"
echo "[5] Dump Mail.log to File?"
echo "[6] Dump Syslog to File?"
read -p "Select an option [1-6]: " OPTION
if
test "$OPTION" -eq "1"
then
head $MLOG
elif
test "$OPTION" -eq "2"
then
head $SLOG
elif
test "$OPTION" -eq "3"
tail $MLOG
elif
test "$OPTION" -eq "4"
tail $SLOG
elif
test "$OPTION" -eq "5"
cat "$MLOG" > ./MessageLogDump.txt
echo "Message.Log Successfully Dumped in PWD"
elif
test "$OPTION" -eq "6"
cat "$SLOG" > ./SysLog.txt
echo "Syslog Successfully Dumped in PWD"
else $? -ne "0"
echo "Something went wrong somewhere"
else z $OPTION
echo "You selected an incorrect option"
fi
有錯誤我收到任何輸出:即使只的標準輸入「1」
./GenSysLog.sh: line 43: syntax error near unexpected token `elif'
./GenSysLog.sh: line 43: ` elif'
我試圖尋找在這裏的其他問題和答案有同樣的錯誤,我注意到人們提到關於CR & LF,但我仍然無法弄清楚。
謝謝。
如果你把它寫成'elif test「$ OPTION」-eq 2;那麼沒有所有額外的換行符 - 讀者(比如你)會更容易看出你錯誤地忽略了'then'。也就是說,這完全是一個使用case語句而不是if/elif/elif/...塊的完美情形。 – 2014-10-04 19:59:56
...順便說一句,我建議測試你的錯誤處理代碼 - 你可能會注意到它實際上並不工作,因爲如果沒有選擇菜單選項,它只會測試'$?',所以如果你選擇一個選項並且在其操作中涉及的某些內容失敗,「$?'從不檢查。 (另外,在代碼中既不使用''''或'test',所以它會嘗試運行'$?'的擴展作爲命令,而不是測試它的值。 – 2014-10-04 20:06:33