命令替换:
var=$(cat /some/file.txt)
将cat命令的输出分配给var变量(不将cat命令输出打印到控制台)。接下来我可以打印var变量的值:
echo "$var"
但是
var=$(java -version)
或
var=$(fish -v)
将立即将命令的输出打印到控制台(即使没有echo命令)。为什么呢?
为什么var变量现在没有值?
如何将命令的输出(例如java -version)分配给变量?
答案 0 :(得分:3)
命令替换仅捕获 stdout 输出。
大概你的命令输出到 stderr 。
使用输出重定向,您也可以捕获stderr:
var=$(java -version 2>&1) # captures both stdout and stderr