cygwin bash - if 語句不起作用

cygwin bash - if 語句不起作用

我是 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

相關內容