bash命令替换期间的空白变量
我正在执行命令替换并将结果保存到变量中。但是,该命令的结果包含双引号,这导致变量为空 运行bash命令替换期间的空白变量,bash,command-substitution,Bash,Command Substitution,我正在执行命令替换并将结果保存到变量中。但是,该命令的结果包含双引号,这导致变量为空 运行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会产生一个空行。将结果直接打印到终端的原因是java-
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
会产生一个空行。将结果直接打印到终端的原因是java-version
输出到标准错误(stderr),而不是标准输出(stdout)
因为没有标准输出(这是$(…)
捕获的),所以$test
被分配了一个空字符串
解决方案是将标准错误(stderr)重定向到标准输出(stdout)
听起来像是信息被写入了stderr而不是stdout。您可以使用
test=“$(java-Version2>&1)”
version=$(java -version 2>&1)