码迷,mamicode.com
首页 > 其他好文 > 详细

sh:not found

时间:2019-12-02 18:43:00      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:window   报错   脚本   表示   打开   not found   保存   dos2unix   一模一样   

起源

在windows中写的脚本执行完全没问题,代码一模一样,切换到linux中执行报错。利用命令 “vi/vim -b 文件名”查看文件发现每行结尾多了“^M”这样的结尾。

根源

通过查询得知,其问题根源是windows和linux换行符不同造成,二者区别如下表(外加了mac book)

  windows linux MacBook
换行符 \r\n \n \r
ASCII 0x0d0a 0x0a 0x0d

  其中:

  • "\r"在ASCII中表示“换行(LF)”
  • "\n"在ASCII中表示“回车(CR)”

解决

sh文件本身有Windows的换行符,去掉就行了

注:主要在linux中解决由于文件结尾产生的错误

1、确认代码无误

2、利用命令“vi -b [filename] ”查看结尾是否多了“^M”

3、文件格式转换

  • 方式一:dos2unix
    • 下载并安装dos2unix
    • 利用命令“dos2unix [filename]”完成转换

 

  • 方式二:替换(vim+正则表达式)
    • 利用命令“vim -b [filename]”打开该文件
    • 在命令模式下输入:“%s/^M//g”或者“g/\^M/s/\^M//”
    • 保存并退出

注意:方式二中“^M”的输入方式:ctrl+v+m

sh:not found

标签:window   报错   脚本   表示   打开   not found   保存   dos2unix   一模一样   

原文地址:https://www.cnblogs.com/ericfengk/p/11972497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!