关于将命令的输出存储在 bash 脚本中的变量中,我遇到了问题。
我知道一般有两种方法可以做到这一点
要么
foo=$(bar)
# or
foo=`bar`
但是对于Java版本查询,这好像不行。
我做到了:
version=$(java --version)
这不会将值存储在 var 中。它甚至仍然会打印它,但事实并非如此。
我也试过将输出重定向到一个文件,但这也失败了。
最佳答案
version=$(java -version 2>&1)
version 参数只需要一个破折号,如果您重定向 stderr,即消息写入的位置,您将获得所需的结果。
作为旁注,使用两个破折号是类 Unix 系统上的非官方标准,但由于 Java 试图在不同平台上几乎相同,因此它违反了 Unix/Linux 的期望,并且在这方面与 Windows 上的行为相同,正如我怀疑的那样,在 Mac OS 上。
关于Bash 脚本将命令输出存储到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768228/