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
你好

 

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