我试图从一个文件中提取版本号,该文件的目录如下所示:
... /directory/to/java/bin/./java -version
从命令行运行该命令会产生以下输出:
java version "1.7.0_269"
Java(TM) SE Runtime Environment (build 7.0.8.10 - pkshd34234hsd284842_01(xop4_))
bla bla bla
whole bunch of
extra info
我需要提取的只是版本号1.7.0_269(特别是minor/patch(?)版本“269”)。
我对另一个文件做了类似的事情,并使用了以下语法:
JAVA_VER=$("/the/directory/to/jversion.sh" | awk -F'java.version:' '{print $2}' | xargs )
它工作得很好,但由于某种原因,它不适用于这个命令(无可否认,我缺乏bash命令的知识,所以我不确定如何正确修改它):
APP_JAVA_VER=$(/the/directory/to/java/bin/./java -version | awk -F'java version' '{print $2}' | xargs)
它只是不输出任何东西。有人能告诉我正确的方向吗?我看到很多不同的方法来解决这类问题,但我想真正了解我的代码哪里出错了,以及如何修改它。这是不是和它不是.sh文件有关?谢谢你的帮助!
1条答案
按热度按时间8dtrkrch1#
您的问题是
java -version
输出到STDERR,而awk在STDIN上查找。试试这个: