2017-07-18 182 views
0

下面的shell腳本在遇到空間時引入換行符。Bash:Printf用換行符替換空格

countries = "Brazil Russia India" 
printf "Countries are %s" $countries 

輸出當屬:

Countries are Brazil 
Countries are Russia 
Countries are India 

相反,它應是

Countries are Brazil Russia India 

有什麼辦法來克服這種行爲?

+1

如何在變量聲明中使用'='周圍的空格?你也可以使用'echo'國家是$國家'' – Sundeep

回答

3

引用變量使其成爲單個參數。

printf "Countries are %s" "$countries" 

在一般情況下,你應該總是報價你的變量,除非你有特別的理由不這麼做。

1

試試這個代碼來解決你的問題。要理解Bash爲什麼會如此行爲,請閱讀this answer.中的說明。它的要點是,帶空格(或其他特殊字符)的未加引號的變量不會表現爲整個字符串。所以要小心。

#!/usr/bin/env bash 
countries="Brazil Russia India" 
printf "Countries are %s" "${countries}"