Bash
Bash 腳本產生“意外標記‘完成’附近的語法錯誤”
shell 腳本如下所示:
#!/bin/bash while [ true ]; do clear date who sleep 5 done
如果我執行 int,我會得到以下資訊:
yuikus@DESKTOP-VTJ0OG4:~$ cd /mnt/d/lab_oc_1/lab_oc_2/ yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ sh bag.sh bag.sh: 7: Syntax error: "done" unexpected (expecting "do") yuikus@DESKTOP-VTJ0OG4:/mnt/d/lab_oc_1/lab_oc_2/$ bash bag.sh bag.sh: line 7: syntax error near unexpected token `done' bag.sh: line 7: `done '
為什麼它不起作用?我從 Windows 執行 Ubuntu。
由於您在 Windows 下執行 Ubuntu,您可能同時使用 Windows 和 Linux 編輯器編輯腳本。但是,Windows 和 Linux 使用不同的行尾,這會使腳本解釋器感到困惑。
執行
dos2unix
您的腳本文件;這將用 Unix 行尾替換任何 Windows (CR-LF) 行尾:$ dos2unix bag.sh
然後,按照最初的預期執行您的腳本。請注意,由於您有一個
#!
-line 聲明/bin/bash
,因此使腳本可執行並將其執行為更有意義$ ./bag.sh
而不是在 下執行它
sh
,它可能會使用另一個 shell,而不是你想要的(Bash)。