use*_*282 59 variables bash store
我有一个问题,关于将命令的输出存储在bash脚本中的变量中.
我知道一般来说有两种方法可以做到这一点
或
foo=$(bar)
# or
foo=`bar`
Run Code Online (Sandbox Code Playgroud)
但对于Java版本查询,这似乎不起作用.
我做了:
version=$(java --version)
Run Code Online (Sandbox Code Playgroud)
这不会将值存储在var中.它甚至还会打印它,实际上并非如此.
我也尝试将输出重定向到文件,但这也失败了.
use*_*own 69
version=$(java -version 2>&1)
Run Code Online (Sandbox Code Playgroud)
版本参数只需要一个破折号,如果重定向stderr,即写入消息的位置,您将获得所需的结果.
作为旁注,使用两个短划线是Unix系统上的一个非官方标准,但由于Java试图在不同平台上几乎完全相同,它违反了Unix/Linux期望并且在这方面的行为与在Windows上一样,并且因为我怀疑,在Mac OS上.
Era*_*tan 15
这是因为java -version写入stderr和不写入stdout.你应该使用:
version=$(java -version 2>&1)
Run Code Online (Sandbox Code Playgroud)
为了重定向stderr到stdout.
您可以通过运行以下两个命令来查看它:
java -version > /dev/null
java -version 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80203 次 |
| 最近记录: |