linux 执行sh_linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题
今天調試一個腳本,每句結尾都有大量/r 換行字符。檢驗了很多次都沒調試成功。
后來才發現這個腳本是在windows環境下編寫的,直接ftp拖到了linux服務器上。
vi下用 :set ff 查看文件的編碼格式,果然是dos的。
用:set ff=unix 將文件變為unix格式,就調試成功了。
備注點1 win和linux換行的區別:
Unix體系里,每行結尾只有“<換行>”,即“n”;
Windows體系里面,每行結尾是“<換行><回 車>”,即“nr”。
一個直接結果是,Unix體系下的文件在Windows里打開的話,所有文字會變成一行;
而Windows里的文件在Unix下打開的話,在每行的結尾可能會多出一個^M符號。
備注點2 文件格式轉換的方式:
方法1:
在命令模式下:輸入:%s/^M//g 然后,回車即可替換
注,其中”^M”的輸入,分別是“Ctrl+v”、“Ctrl+M”鍵生成的
方法2:
使用vi打開文本文件
vi dos.txt
命令模式下輸入
:set fileformat=unix
:w
方法3:
使用sed 工具
sed ’s/^M//’ filename > tmp_filename
方法4:
既然window下的回車符多了‘r’,那么當然通過刪除‘r’ ,也可以實現:
tr -d ‘r’
方法5:(最常用的方法)
$ dos2unix filename
總結
以上是生活随笔為你收集整理的linux 执行sh_linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue2.0 路由不显示router-
- 下一篇: MySQL笔记-utf8和utfmb4