如何将echo命令的输出追加到变量中并保留换行
如何将echo命令的输出追加到变量中并保留换行
嗨,我来帮你搞定这个问题!要把两次echo的输出追加到同一个变量里,还能保留换行格式,在bash这类shell里其实很简单,我给你拆解几种实用方法:
方法一:用变量追加符+=结合命令替换
这种方式完全贴合你的需求——分两次把echo的结果追加到变量中:
# 先初始化一个空变量 my_output="" # 第一次追加echo的输出,用双引号包裹命令替换,完整保留换行 my_output+="$(echo "string1")" # 第二次追加第二个echo的输出,同样保留换行 my_output+="$(echo "string2")" # 调用变量时一定要用双引号包裹,否则换行会被替换成空格 echo "$my_output"
运行后你会得到想要的输出:
string1 string2
方法二:手动添加换行符(更可控)
如果担心某些环境下echo默认不带换行(比如用了echo -n参数),可以手动添加shell的换行符$'\n'来确保格式:
my_output="" # 追加第一个字符串+换行 my_output+="$(echo "string1")"$'\n' # 追加第二个字符串+换行 my_output+="$(echo "string2")"$'\n' # 输出变量 echo "$my_output"
这种方式的换行更可控,输出效果和第一种一致。
关键注意事项
- 必须用双引号包裹变量:不管是赋值还是输出时,如果不用双引号,shell会把变量里的换行符当成空白字符替换成空格,最终输出就变成
string1 string2了。 - 命令替换
$(echo "xxx")会捕获echo的所有输出(包括默认的换行符),用双引号包裹就能完整保留这些内容到变量中。
备注:内容来源于stack exchange,提问作者Калоян Петров
相关产品推荐
相关产品推荐

