如何解决’java -version’输出中grep和awk;如何将’java -version‘输出的信息保存到文件。
问题
1、我试图将“ java -version”命令的出口重定向到文件或变量,但是它不起作用。
java -version >> test.txt
另外,我试图将其分配给一个变量:
JAVA_CHECK=`java -version`
即使从命令行运行这些命令,它仍然无法正常工作。
当我说它不起作用时,我的意思是该命令的退出正在屏幕上显示,而不是将其重定向到文件或任何地方
2、在我的Linux机器上,我不清楚为什么要执行以下操作,然后我不会仅获得版本字符串(“1.8.0_151”)。
# java -version | grep version | awk '{print $NF}'
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
解决
1、java -version写入stderr,而不是stdout。您可以将stderr重定向到文件:
java -version 2> test.txt
# cat test.txt
# java version "1.8.0_151"
# Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
# [...]
或者,您可以将stderr重定向到stdout:
java_check=$(java -version 2>&1)
# echo "$java_check"
# java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) [...]
2、可以尝试一下这样:
java -version 2>&1 | grep version | awk '{print $NF}'
总结
出现这样的问题,主要就是这些消息默认情况下转到stderr,而不是stdout。所有我们需要先重定向到stdout,然后才能进行此类操作。
扫描二维码关注公众号,回复:
8656490 查看本文章