在windows下的文本,默認換行符是^M$,稱為CR與LF兩個符号;而在linux中是以$結尾,即LF結尾。因此如果在windows下編輯的shell腳本如果沒有選對正确的格式就會出現很詭異的現象,甚至不能運行。
可以使用file命令進行查看:
file 1.sh
1.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators
可以看到,腳本是以CRLF換行的。
如果直接執行就會發現,無法找到解釋器,發現解釋器的後面還加了一個^M:
./1.sh
bash: ./1.sh: /bin/bash^M: 解釋器錯誤: 沒有那個文件或目錄
直接使用bash -x查看執行過程:
bash -x 1.sh
a=$'linux123124124124\r'
echo $'linux123124124124\rabcdef\r'
abcdef23124124124
這裡可以看到\r的字符導緻輸出的結果異常的。
觸摸屏
1、使用vim轉換格式
vim 1.sh
在命令模式先輸入
:set ff=unix
或者
:set fileformat=unix
2、使用dos2unix命令
dos2unix 1.sh
3、使用sed替換掉\r$
sed -i 's/\r$//' 1.sh
藍色發光新技術在深空
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!