執行簡單的 Shell 腳本:
#!/bin/bash
for F in 1 2 3 4 5
do
echo $F
done
輸出卻顯示:
: command not found
1
: command not found
2
...
腳本文件保存格式為 Windows 風格 (CRLF, \r\n),而 Linux/Unix 系統要求 Unix 風格 (LF, \n)。
回車符 \r 被 Shell 解釋器當作命令的一部分,導致每行開頭多出一個空命令,報錯 : command not found。
dos2unix script.sh
sed -i 's/\r$//' script.sh
:set fileformat=unix 後 :w。轉換後用 cat -A script.sh 檢查,行尾應僅顯示 $(換行符),不應有 ^M(回車符)。