从windows 复制过来的解压文件到 linux 发现了这个错误,可以这样解决:
原因:
将shell脚本由windows下移动、复制到linux系统下时会出现该问题,windows会自动在每一行结尾处加上 \r ,这是由于windows系统造成,但是 \r 在linux下没有对应的符号,所以Linux把 \r 就翻译成为 ^M ,当执行脚本时,由于无法识别 ^M 所以报错
解决办法:
使用sed将 \r 从每行结尾删除,如下
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# ls
shutdown.cmd shutdown.sh startup.cmd startup.sh
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# ./startup.sh
-bash: ./startup.sh: /bin/sh^M: 解释器错误: 没有那个文件或目录
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' urfile
sed:无法读取 urfile:没有那个文件或目录
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' startup.sh
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' shutdown.sh
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' startup.sh
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END