2019年9月17日
Jerry
4452
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
微信
支付宝