問題:某天研發某同事找我說幫他看看他寫的shell腳本,死活不執行,報錯。我看了下,腳本很簡單,也沒有常規性的錯誤,報“:badinterpreter:Nosuchfileordirectory”錯。
看這錯,我就問他是不是在windows下編寫的腳本,然後在上傳到linux服務器的……果然。
原因:在DOS/windows裏,文本文件的換行符爲rn,而在*nix系統裏則爲n,所以DOS/Windows裏編輯過的文本文件到了*nix裏,每一行都多了個^M。
解決:
1)重新在linux下編寫腳本;
2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)
附:sh-x腳本文件名,可以單步執行並回顯結果,有助於排查複雜腳本問題。