• shell脚本执行报错:/bin/bash^M: bad interpreter: No such file or directory


    shell脚本报错/bin/bash^M: bad interpreter: No such file or directory,通过查阅资料得知,shell脚本格式必须是unix才行,但我这个脚本是在windows上编写完成传到Linux服务器上的,所以一执行就报错:

    windows环境下的文件是dos格式,即每行结尾以 来标识,而linux下的文件是unix格式,行尾则以 来标识,查看该文件格式:

    1.cat -A filename,如果输出结果中行末尾是^M$,则是dos格式,如果行末尾只是$,则是unix格式。

    2.vim filename,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。

    3.od -t x1 filename,以16进制查看文件,若输出结果中存在“0d 0a”则为dos格式,如果只有“0a”则为unix格式。其中“0d”即为回车符“ ”,“0a”即为换行符“ ”。

    通过上图可以看出,文件末尾是^M$,所以要修改该shell脚本格式,方法如下:

    1.sed -i "s/ //" filename 或sed -i "s/^M//" filename,直接将回车符替换为空字符串。

    2.vim filename,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。

    3.dos2unix filename或busybox dos2unix filename,如果提示command not found,可以使用前两种方法。

    https://blog.csdn.net/weixin_39309402/article/details/99732688

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/13712530.html

  • 相关阅读:
    MyBatis 知识点梳理
    SSH无密码登录的原理及配置
    Maven学习笔记
    阿里Java开发电话面试经历惨败
    Java生成验证码(二)
    Java生成验证码(一)
    Hibernate 知识点梳理
    数据结构线性表顺序表示 (二)
    replace tabs with the proper number of blanks
    数据结构线性表顺序表示 (三)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13712530.html
Copyright © 2020-2023  润新知