bash命令替换期间的空白变量

沙威

我正在执行命令替换并将结果保存到变量。但是,命令的结果包含双引号,这导致变量为空。

运行时,test="$(java -version)"我得到以下结果:

openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

但是,运行会echo $test产生空白行。

算术

test="$(java -version)"直接将结果打印到终端的原因java -version输出到标准错误(stderr),而不是标准输出(stdout)。

因为没有stdout输出($(...)捕获的内容),$test所以分配了一个空字符串。

解决方案是将标准错误(stderr)重定向到标准输出(stdout)。

version=$(java -version 2>&1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章