bash 命令替换期间的空白变量
Blank variable during 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
产生一个空行。
之所以test="$(java -version)"
直接把结果打印到终端是因为java -version
输出的是标准错误(stderr),而不是标准输出(stdout)。
因为没有标准输出输出(这是 $(...)
捕获的内容),$test
被分配了一个空字符串。
解决方案是将标准错误 (stderr) 重定向到标准输出 (stdout)。
version=$(java -version 2>&1)
我正在执行命令替换并将结果保存到变量中。但是,命令的结果包含双引号,这导致变量为空。
当 运行 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)。
因为没有标准输出输出(这是 $(...)
捕获的内容),$test
被分配了一个空字符串。
解决方案是将标准错误 (stderr) 重定向到标准输出 (stdout)。
version=$(java -version 2>&1)