[dywang@dywmac ~]$ cd zzz [dywang@dywmac zzz]$ vim dos.sh [dywang@dywmac zzz]$ cat -EvT dos.sh #/bin/bash$ a=123$ echo^I$a$ $
[dywang@dywmac zzz]$ sh dos.sh 123
^M
。為測試此不同,先以指令 unix2dos 將 dos.sh 轉成 DOS 格式,再以 cat -EvT 顯示檔案內容,可查看到 windows 格式的文件結尾符號 ^M
。
[dywang@dywmac zzz]$ unix2dos dos.sh unix2dos: converting file dos.sh to DOS format ... [dywang@dywmac zzz]$ cat -EvT dos.sh #/bin/bash^M$ a=123^M$ echo^I$a^M$ ^M$
$'...'
解釋 ...
,例如 \n
是換行,而 windows 的斷行符號是 \r
。
因此可以找到有斷行符號的總行數 4 行,也就是 issue 有 4 行,空白行 1 行。
[dywang@dywmac zzz]$ grep $'\r' dos.sh | wc -l 4 [dywang@dywmac zzz]$ grep $'^\r' dos.sh | wc -l 1
[dywang@dywmac zzz]$ sh dos.sh 123 : command not found
[dywang@dywmac zzz]$ dos2unix dos.sh dos2unix: converting file dos.sh to UNIX format ... [dywang@dywmac zzz]$ sh dos.sh 123