Bash 脚本将命令输出存储到变量中

标签 bash variables store

关于将命令的输出存储在 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/

相关文章:

bash - 在 while 循环中等待按键并停止脚本

javascript - 无法在另一个js文件中获取全局变量

c# - 如何将字符串拆分为多维数组或锯齿数组?

database - 如何使用正确的索引存储视频

store - 如何使用 Jasmine 和 Marble 在 Angular 4 5 中使用 ngrx 过滤器测试效果

bash - 替换所有文件中的字符串 - Unix

linux - 根据部分文件名将文件归档到文件夹中的 Bash 脚本

java - 是否可以从 Java 中的方法返回多个值?

javascript - Redux 将商店保存为 React 应用程序上的全局变量

bash - 我如何比较bash中的 float