首页 > 解决方案 > bash - 将命令输出到变量不起作用

问题描述

由于某种原因,这在我的机器上不起作用。我有一个测试脚本test.sh包含

#! /usr/bin/env ksh
JV=$(javac -version)
echo "JV1: $JV eol"
echo "JV2: ${JV} eol"

输出

JV1:  eol
JV2:  eol

如果我在终端上运行命令

>: javac -version

我明白了

>: javac 1.8.0_222

环境:

操作系统:CentOS Linux 7.7.1908 版

重击:4.2.46(2)


我看了一下这个帖子,似乎对我不起作用。有什么建议么?

标签: linuxbash

解决方案


java -version正在写入标准错误,而不是标准输出(这是$(...)捕获的内容。您需要重定向输出。

JV=$(javac -version 2>&1)

推荐阅读