不能在'java -version'输出中grep和awk

文章目录


如何解决’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 查看本文章
发布了67 篇原创文章 · 获赞 68 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/ITqingliang/article/details/103733038