我有一个变量final_list
,在循环中通过变量url
追加其内容,代码如下:
while read url; do
final_list="$final_list"$'\n'"$url"
done < file.txt
令我惊讶的是,
\n
被添加为一个空格,因此结果如下:url1 url2 url3
当我想要:
url1
url2
url3
出了什么问题?
变量"$final_list"
中有很多换行符。如果要使用双引号echo
它,请像这样打印:
echo "$final_list"
url1
url2
url3
或者更好地使用printf
:
printf "%s\n" "$final_list"
url1
url2
url3
这可能取决于您尝试如何显示最终结果。请尝试在双引号内输出结果变量:
echo "$final_list"
如果有人想尝试,可以添加另一种可能的选项。
使用字符串值:
命令:echo "这是我想在下一行打印的字符串" | tr " " "\n"
输出:
This
is
the
string
I
want
to
print
in
next
line
使用变量:
finallist="url1 url2 url3"
url="url4 url5"
echo "$finallist $url" | tr " " "\n"
输出:
url1
url2
url3
url4
url5
如果您想让一行中有几个单词,下一行有几个单词,请尝试使用不同的分隔符(例如-、:、;等)。
$final_list
展开后,任何空格(包括换行符)都被视为单词分隔符,而不是要打印的字面字符。echo
命令只接收 3 个参数,即实际的 URL。加上引号后,echo
收到的是一个参数,即包含 URL 和分隔它们的换行符的字符串。 - chepner