28

我有一个变量,它由循环中final_list的变量附加为:url

while read url; do
    final_list="$final_list"$'\n'"$url"
done < file.txt

令我惊讶的\n是,它被附加为一个空格,所以结果是:

url1 url2 url3

虽然我想要:

url1
url2
url3

怎么了?

4

3 回答 3

32

变量中有很多新行"$final_list"echo它像这样用双引号

echo "$final_list"
url1
url2
url3

或更好地使用printf

printf "%s\n" "$final_list"
url1
url2
url3
于 2013-08-30T14:57:32.640 回答
2

这可能取决于您如何尝试显示最终结果。尝试在双引号内输出结果变量:

echo "$final_list"
于 2013-08-30T14:58:46.157 回答
0

如果有人想尝试,可以再添加一个可能的选项。

使用字符串值:

命令 :echo "This is the string I want to print in next line" | tr " " "\n"

输出 :

This
is
the
string
I
want
to
print
in
next
line

使用 Vars:

finallist="url1 url2 url3"          
url="url4 url5"                     
echo "$finallist $url" | tr " " "\n"

输出 :

url1
url2
url3
url4
url5

如果您希望一行中的单词少而下一行中的单词少,请尝试使用不同的分隔符。(如 - 或 : 或 ; 或等...)

于 2022-02-15T18:43:32.190 回答