配置文件中的以下行要替换为java路径,但不要替换有java.base和java.lang的java。
JAVA_VERSION=$("java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
$java -DagentVersion=2.6.0 --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar
在 ansible 任务中尝试过以下
- replace:
path: "/tmp/config.txt"
regexp: '^(?!.*java[.])(?=java)(.*)$'
replace: '/opt/java17\1'
预期输出:将两行中的 java 替换为 /opt/java17,但不编辑和排除同一行区域 (java.base/java.lang) 中匹配的 java。
JAVA_VERSION=$("/opt/java17" -版本 2>&1 | awk -F '"' '/版本/ {打印$2}')
$/opt/java17 -DagentVersion=2.6.0 --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar