java -version為stderr輸出,獲取java版本需要重定向

你好我是李白發表於2020-06-02

現象

    今天寫一個初始化伺服器指令碼,想獲取java版本,結果使用java -version一直無法使用sed與awk處理,經過實驗,發現

java -version輸出為stderr,無法處理。

測試

# 將命令輸出2 stderr與1 stdout分別輸出到指定檔案,檢視檔案內容,驗證java -version輸出為stderr
[root@template yum.repos.d]# java -version 2>/tmp/java_version_stderr.out 1>/tmp/java_stdout.out
[root@template yum.repos.d]# cat /tmp/java_version_stderr.out 
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@template yum.repos.d]# cat /tmp/java_stdout.out 
#可以看到java -version輸出為stderr,所以我們如果想繼續處理java -version輸出,需要重定向到stdout

解決

java_ver=`java -version 2>&1 | sed '1!d'|sed 's/"//g'|awk '{print $NF}'|awk -F'.' '{print $1$2}'`

參考

https://blog.csdn.net/10km/article/details/98481428


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2695593/,如需轉載,請註明出處,否則將追究法律責任。

相關文章