【问题标题】:Redirect java -version to file or variable将 java -version 重定向到文件或变量
【发布时间】:2014-02-22 14:17:35
【问题描述】:

也许这是一个愚蠢的问题,但我试图将“java -version”命令的退出重定向到文件或变量,但它不起作用。

服务器 = Linux CentOS 6

我在 shell 脚本中的代码

java -version >> test.txt

我也在尝试将它分配给一个变量:

JAVA_CHECK=`java -version`

即使从命令行运行这些命令,它仍然无法正常工作。

当我说它不起作用时,我的意思是命令的退出显示在我的屏幕上,而不是将其重定向到文件或任何地方

...

【问题讨论】:

  • 这是一个很好的问题 - 这也发生在 Windows 上

标签: java linux variables redirect command


【解决方案1】:

java -version 写入标准错误(文件编号 2),而不是标准输出(文件编号 1)。您可以将 stderr 重定向到文件:

java -version 2> test.txt
# cat test.txt 
# java version "1.7.0_25"
# OpenJDK Runtime Environment
# [...]

或者您可以将标准错误重定向到标准输出:

java_check=$(java -version 2>&1)
# echo "$java_check"
# java version "1.7.0_25" OpenJDK Runtime Environment [...]

【讨论】:

  • 很好用!!但我不明白为什么 Java 写入 sterr 而不是 stdout。当我尝试在我的 shell 脚本中分配变量命令时,发生了其他奇怪的问题,它有效,我的意思是它在重定向方面做得很好,但它给我的变量提供了“错误:无法找到或加载主类版本”
  • 可能你忘记了版本之前的破折号:java version 将尝试运行一个名为version 的类
  • 很遗憾没有,破折号还在,我已经复制并粘贴了命令。这很有趣,因为 2> test.txt 有效,但 2>&1 显示错误。
  • 令人着迷!你用的是哪个外壳?在 ubuntu/bash 上为我工作。
  • 嗯,是的。我正在使用 CentOS/bash。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2017-07-21
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多