2017-07-18 117 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}"