我是 bash 腳本新手,我想在 Windows 上學習,所以我下載了 cygwin。使用Windows 10,cygwin v2.5.1
我確保我安裝了 bash 套件(我確實安裝了),所以我開始學習一些教程,但是當我到達if...fi
語句時,它停止工作。這是我的程式碼:
#!/usr/bin/env bash
#
echo 'Hello'
#
if [ 1 -eq 1 ]
then
echo 'Success'
fi
echo 'Hello Again'
輸出是
>./test.sh
Hello
./test.sh: line 10: syntax error: unexpected end of file
我一生都無法弄清楚出了什麼問題。我已經複製/貼上 if 語句並嘗試了不同類型的表達式,但它似乎根本沒有註冊if
。
也許我配置了cygwin錯誤?
答案1
嗯……我覺得自己很蠢。但我會為其他有相同問題的人回答這個問題。
由於我在 Windows 電腦上進行開發,因此它使用 CRLF 行結尾。我使用 Sublime Text 並且從不考慮行結尾,因為我總是為 Windows 進行開發。
但是,當然,bash 腳本需要使用 LF 行結尾,否則會發生奇怪的事情。我無法說出為什麼它讓echo
命令執行而不是if...fi
,但是當我將行結尾切換為 LF 時,一切都按您的預期進行。
答案2
它對我有用,但如果我將行終止更改為 DOS 樣式(CR/LF 行終止)
$ u2d ./prova.sh
unix2dos: converting file ./prova.sh to DOS format...
$ ./prova.sh
Hello
./prova.sh: line 10: syntax error: unexpected end of file
所以將你的腳本轉換為unix風格(LF作為行尾)
$ d2u ./prova.sh
dos2unix: converting file ./prova.sh to Unix format...
$ ./prova.sh
Hello
Success
Hello Again