sh:not found


起源

在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM