博客动态
Hi!欢迎来到Jerry Coding!公众号垃圾分类增加学习功能,关注下面的公众号一起来帮助Jerry学习更多垃圾分类知识吧!
微信扫码

扫一扫关注我

More
关于
New
RSS

Shell脚本报错 /bin/bash^M: bad interpreter

2019年9月17日 Jerry 1199 2019年9月17日

       之前写了一个shell脚本执行都是没有问题的,后来换了一台服务器,结果执行失败,提示:-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory  这是怎么回事?

       代码很简单,就是生成一个随机码,输出。

#!/bin/bash

echo "正在生成随机验证码.."
# 生成随机码
newpsd=$(date +%s%N | md5sum | head -c 10)
echo "生成成功:" $newpsd

       执行一直提示如下的错误,即使加了777的权限还是不好使。

       最后,网上找到了答案:这个文件在 windows 里使用 nodepad++ 编辑保存过,于是文件格式变为dos格式,而linux系统执行的是unix格式的文件。关于 dos/windows 和 unix/linux 的文件格式区别,貌似只存在于回车换行上:dos 文件中,按一下回车键相当于输入了 \r\n,而在unix的文件格式中是\n。

       可以在 vim 编辑器中查看格式,命令为 :set ff ,于是可以看到格式:

       原因找到了,那就将 dos 格式转变为 unix 格式即可,以下几种转换方法:

1、vim编辑器中修改

       vim编辑器打开文件后,直接输入 :set ff=unix,回车保存即可:

2、借用 dos2unix 和 unix2dos 命令转换

       如果没有安装需要安装这俩工具:

sudo apt install dos2unix
sudo apt install unix2dos

       执行命令转化:

ubuntu@VM-0-9-ubuntu:~$ dos2unix test.sh 
dos2unix: converting file test.sh to Unix format ...

       最后,就可以愉快的执行脚本了!


原创文章,转载请注明出处: https://jerrycoding.com/article/dos2unix

微信
支付宝

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论

每日一句 (From ONE)
人一出生,就会慢慢长大,品尝人生的滋味,怀抱无限的希望,然后就是死亡的降临。无论男女,永远都不能死而复生。尽管如此,人们依然抱着“长生不死”的幻想。其实,人类只是茫茫宇宙一个小小的天地,转眼间就会灰飞烟灭,化为培育新芽的养料。花草树木、飞禽走兽、芸芸众生、点点星辰以及大千世界,都会在获得生命之后走向死亡,然后转化成别的什么。
微信扫码

扫一扫关注我

关于本站