You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bash Shell脚本提取Java版本号失败的问题排查

Java -version版本号提取失败的原因及解决方法

问题原因

java -version的输出默认打印到标准错误流(stderr),而非标准输出流(stdout)。你之前的管道命令只捕获了stdout的内容,导致awk无法获取到任何输入,最终输出为空。

解决方法

1. 修正输出捕获逻辑

先将stderr重定向到stdout,让管道能获取到java -version的输出:

APP_JAVA_VER=$(/the/directory/to/java/bin/java -version 2>&1 | awk -F'java version' '{print $2}' | xargs)

其中2>&1是关键,它把文件描述符2(stderr)的内容重定向到文件描述符1(stdout),确保后续命令能读取到输出。

2. 精准提取版本信息

  • 提取完整版本号(如1.7.0_269):
    改用双引号作为分隔符,直接定位版本字符串:
    FULL_JAVA_VER=$(/the/directory/to/java/bin/java -version 2>&1 | awk -F'"' '/java version/ {print $2}')
    
  • 单独提取build号(如269):
    在拿到完整版本号后,按下划线分割取第二个元素:
    JAVA_BUILD_NUM=$(/the/directory/to/java/bin/java -version 2>&1 | awk -F'"' '/java version/ {split($2, ver_arr, "_"); print ver_arr[2]}')
    

内容的提问来源于stack exchange,提问作者TorusWithSprinkles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:33:34