Shell腳本bash: ./t.sh:/bin/bash^M:損壞的解釋器: 沒有那個文件或目錄

        今天在將windows下的腳本文件通過scp命令,發送到遠程服務器上,在執行過程中遇得到了這個問題

./sh.sh 
-bash: ./sh.sh: /bin/bash^M: 壞的解釋器: 沒有那個文件或目錄

        原因分析:windows下,每一行的結尾是\n\r,而在linux下文件的結尾是\n,那麼在windows下編輯過的文件在linux下打開看的時候每一行的結尾就會多出來一個字符\r,用cat -A urfile時你可以看到這個\r字符被顯示爲^M,這時候只需要刪除這個字符就可以了,可以使用命令 sed -i ‘s/\r$//’ filename。

cat -A sh.sh
#!/bin/bash^M$
# ^M$
^M$
echo "Hello World"^M$
sed -i 's/\r//' sh.sh
./sh.sh 
Hello World
你好

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章