由于shell脚本是windows dos格式的,所以linux下执行报错/bin/bash^M: bad interpreter: No such file or directory

 从同事那拷贝过来一个shell脚本,执行不成功,提示bash解析器有问题

root@localhost:~# ./pps_check.sh /sys/class/pps/pps0/assert
-bash: ./pps_check.sh: /bin/bash^M: bad interpreter: No such file or directory

查阅资料,原来是同事的shell是Windows的DOS格式,linux不识别,只需将文件格式转换成unix的即可

补充下window dos和unix格式的区别:

UNIX格式,每行的行尾都是用一个0x0a字符(换行字符LF)表示的,而在WINDOWS/DOS下每行的行尾都是用0x0d 0x0a两个字符(回车字符CR,换行字符LF)所以上述报错信息中/bin/bash后面跟着一个^M, 可能就是行尾的一个符号linux不识别。

下面将文件转化为unix格式,

steps:

1. vim pps_check.sh

    从打开的编辑页面下方,也可以看出是window dos格式的,

2. 进入命令行模式,输入命令 :set ff, 以查看文件格式,

 

    通过结果看出文件格式为dos

3. 修改文件格式, 进入命令行,输入命令::set ff=unix

4. 保存文件并退出: :wq

5. 再执行一次该shell脚本,已经能执行成功

root@localhost:~#
root@localhost:~# ./pps_check.sh /sys/class/pps/pps0/assert
usage: ./pps_check.sh /sys/class/pps/pps[index]/assert
PPS event: seq 1744, sys_time 1568978072.619048856, sys_freq_off 0
PPS event: seq 1745, sys_time 1568978073.618971656, sys_freq_off 77005
PPS event: seq 1746, sys_time 1568978074.618984096, sys_freq_off -11999
PPS event: seq 1747, sys_time 1568978075.618979297, sys_freq_off 5000
PPS event: seq 1748, sys_time 1568978076.618967697, sys_freq_off 11000
PPS event: seq 1749, sys_time 1568978077.618965257, sys_freq_off 3000


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值