bash中命令替换的奇怪行为

时间:2016-02-26 18:40:36

标签: bash

命令替换:

var=$(cat /some/file.txt)

将cat命令的输出分配给var变量(不将cat命令输出打印到控制台)。接下来我可以打印var变量的值:

echo "$var"

但是

var=$(java -version)

var=$(fish -v)

将立即将命令的输出打印到控制台(即使没有echo命令)。为什么呢?

为什么var变量现在没有值?

如何将命令的输出(例如java -version)分配给变量?

1 个答案:

答案 0 :(得分:3)

命令替换仅捕获 stdout 输出。

大概你的命令输出到 stderr

使用输出重定向,您也可以捕获stderr:

var=$(java -version 2>&1) # captures both stdout and stderr