-bash:意外標記「;」附近出現語法錯誤

-bash:意外標記「;」附近出現語法錯誤

if then 的正確格式是什麼?
我嘗試了很多品種。
當不在程式中時,該格式是否應該在命令列上工作?

$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'

答案1

還沒有人解釋這個錯誤。

你登入了:

if [1==2] then echo "y" fi;
;

就 shell 而言,第一行是完全有效的語法。它的形式如下:

if cmd args

在本例中,cmd源自[1==2]glob 的擴充。是一種通配模式,它擴展到目前目錄中名稱由,或字元[1==2]組成的檔案清單。1=2

例如,如果2當前目錄中有一個檔案被調用,則變為:

如果 2 則回顯 fi;

即執行2帶有 4 個參數的命令:2thenecho和,作為語句部分fi中的第一個命令。ifif/then/elif/else/fi

錯誤來自;第二行的那一秒。如果您;在命令列中單獨輸入該錯誤訊息,則會收到相同的錯誤訊息。;必須用於分隔命令,不能像這樣單獨使用。

答案2

bash 構造的正確形式if

if something; then command; fi

您似乎正在嘗試做的事情的正確形式是

if [ 2 -eq 2 ]; then echo "y"; fi;

空格在 bash 中很重要。

答案3

試試這個:

if [ 1 == 2 ]; then echo "y" ; fi

最好使用-eq,除非您想將 1 和 2 作為字串進行比較。

有用的連結:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

答案4

==Bash 中不存在該運算子。它要么-eq在比較數字時,要么=在比較字串時。

if [ 1 -eq 2 ]; then echo 'y'; fi

相關內容