shell腳本異常:/bin/sh^M:bad interpreter: No such file or directory
把sh腳本在windows下修改了下,放到linux下,老是運行不能成功,每一個命令的最後都被加了一個M,查找了下,緣由是由於編碼格式引發的。
分析:這是不一樣系統編碼格式引發的:在windows系統中編輯的.sh文件可能有不可見字符,因此在Linux系統下執行會報以上異常信息。
解決:
1)在windows下轉換:
利用一些編輯器如UltraEdit或EditPlus等工具先將腳本編碼轉換,再放到Linux中執行。轉換方式以下(UltraEdit):File-->Conversions-->DOS->UNIX便可。
2)也可在Linux中轉換:
#sh>vi filename
利用以下命令查看文件格式
:set ff 或 :set fileformat
能夠看到以下信息
fileformat=dos 或 fileformat=unix
利用以下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盤退出)
3)使用dos2unix工具進行轉換(sudo yum/apt-get install dos2unix)
dos2unix filename
dos2unix: converting file filename to UNIX format ...
最後再執行文件
#sh>./filename linux