将多行输出捕获到Bash变量中
将多行输出捕获到Bash变量中
我有一个名为“myscript”的脚本,它输出以下内容:
abc def ghi
在另一个脚本中,我调用:
declare RESULT=$(./myscript)
并且$RESULT
得到了值
abc def ghi
是否有一种方法可以将结果与换行符一起存储,或使用“\\n”字符,以便我可以使用“echo -e
”输出它?
admin 更改状态以发布 2023年5月22日
这种方法的另一个陷阱是命令替换或 $()
去掉尾随换行符。这可能并不总是很重要,但如果你真的想要保留完全的输出内容,你需要使用另一行代码和一些引用:
RESULTX="$(./myscript; echo x)" RESULT="${RESULTX%x}"
这个特别重要,特别是当你想要处理所有可能的文件名时(以避免未定义的行为,比如处理错误的文件)。