2017-08-02 83 views
1

我的目標是連接兩個字符串。bash中的字符串連接3.2.57(macOS)

這裏是我的bash腳本的複製粘貼:

str1="Hello" 
str2="World" 
str3=$str1$str2 
echo $str3 

預期的輸出是HelloWorld但我得到World代替。

當我在終端中運行它時,它工作正常。

下面是輸出的,當我在我的腳本運行cat -v

str1="Hello"^M 
str2="World"^M 
str3=$str1$str2^M 
echo $str3^M 

我這麼想嗎?

+0

'str1'的定義是否以一個windows行結束符結束? – choroba

回答

4

這可能是因爲您在$str1末尾有回車(\r)。我得到以下相同的輸出:

#!/bin/bash 
str1="Hello"$'\r' 
str2="World" 
str3=$str1$str2 
echo $str3 

它通常發生在MSWin機器上創建腳本時。

它打印出你好,但是然後\r將光標移回到行的開頭,並覆蓋Hello with World。

您可以通過運行十六進制轉儲或cat -v來驗證它。

+0

謝謝,請參閱'cat -v'輸出的更新問題。 –

+1

@EtienneMartin:是的,就是這樣。刪除回車。 – choroba

+0

你是男人@choroba,在我的編輯器中將行結尾改爲unix修復了這個問題。 –