如何将Bash命令的日志输出存入变量?
嘿,我来帮你搞定这个问题!要把Bash命令的输出(包括日志内容)存入变量,其实有几种实用的方式,具体看你要捕获的是普通输出、错误日志,还是两者都要。结合你的场景——script-two.sh会输出hello,我给你具体的操作示例:
1. 捕获标准输出到变量
这是最常用的场景,直接用命令替换(推荐用$(),比老派的反引号可读性更强)就能实现:
# 执行script-two.sh,把它的标准输出存入output变量 output=$(./script-two.sh) # 验证一下变量内容 echo "$output"
执行后,output变量里就会存着hello啦。
2. 同时捕获标准输出和错误日志
如果你的脚本还会输出错误信息(比如stderr流的内容),想要把正常输出和错误日志一起存入变量,可以把stderr重定向到stdout:
# 方式1:用&>一次性重定向所有输出 output=$(./script-two.sh &>) # 方式2:更明确的写法,把文件描述符2(stderr)重定向到1(stdout) output=$(./script-two.sh 2>&1)
这样不管是脚本的正常输出还是错误提示,都会被统一存入变量中。
小补充
- 要是想保留输出里的换行符,记得用双引号包裹变量(比如上面的
echo "$output"),不然换行会被当成空格处理哦。 - 如果脚本还没执行权限,先跑
chmod +x script-two.sh给它加上权限再执行。
内容的提问来源于stack exchange,提问作者Cristian
相关产品推荐
相关产品推荐

