bash 本機字串操作顯示混亂的輸出

bash 本機字串操作顯示混亂的輸出

我嘗試使用 bash 字串本機操作來用我的 shell 變數取代字串。

var1='123'
var2='2018-01-01'
var3='2018-01-02'
var4='myfunction('var1','var2','var3')'

var5=${var4/var1/$var1}
echo $var5

var5=${var5/var2/$var2}
echo $var5

var5=${var5/var1/$var3}
echo $var5

預期輸出:

myfunction('123','var2','var3')
myfunction('123','2018-01-01','var3')
myfunction('123','2018-01-01','2018-01-02')

帶有混亂字串的實際輸出:

myfunction('123','var2','var3')
myfunction('123','2018-01-01','var3')
')function('123','2018-01-01','2018-01-02

這裡最後兩個字元在開頭移動,我遺失了字串的前兩個字元。我可以使用 SED 來實現相同的目的。但我只是想弄清楚為什麼 bash 本機字串操作不能按預期工作。是因為我做了多次替換嗎?

感謝您的幫助。

答案1

內容末端有一個回車符 (CR) var3。在列印後,如果沒有緊跟著換行符(換行符,LF),該行的剩餘部分將從左邊緣列印,並覆蓋已列印的行開頭。

Unix 標準的行結束符是 LF,而不是 CR LF。

dos2unix重寫在文件上定義或使用變數的腳本行。

相關內容