Bash script store command output into variable

匆匆过客 提交于 2019-11-28 04:49:37
 version=$(java -version 2>&1)

The version param only takes one dash, and if you redirect stderr, which is, where the message is written to, you'll get the desired result.

As a sidenote, using two dashes is an inofficial standard on Unix like systems, but since Java tries to be almost identical over different platforms, it violates the Unix/Linux-expectations and behaves the same in this regard as on windows, and as I suspect, on Mac OS.

Eran Ben-Natan

That is because java -version writes to stderr and not stdout. You should use:

version=$(java -version 2>&1)

In order to redirect stderr to stdout.

You can see it by running the following 2 commands:

java -version > /dev/null

java -version 2> /dev/null
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!