sh:not found

Posted ericfengk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh:not found相关的知识,希望对你有一定的参考价值。

起源

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

根源

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

  windows linux MacBook
换行符
ASCII 0x0d0a 0x0a 0x0d

  其中:

  • " "在ASCII中表示“换行(LF)”
  • " "在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的主要内容,如果未能解决你的问题,请参考以下文章