gpt4 book ai didi

java - 如何在终端中访问 Java 属性

转载 作者:行者123 更新时间:2023-12-02 09:37:13 26 4
gpt4 key购买 nike

我知道我可以使用

从终端获取所有 Java 系统属性
java -XshowSettings:properties -version

如何仅访问一个特定的 Java 系统属性?例如,像“user.name”?

我想在终端中执行此操作,而不是使用 Java。

最佳答案

作为单行脚本的解决方案。只需将 val 变量更改为您要打印的键即可:

val='java.library.path'; java -XshowSettings:properties -version 2>&1 | sed -re 's/^ +[^=]+ =/_&/' | gawk -v key=$val 'BEGIN{ RS="_"; IFS=" = "} { if($1 ~ key){ print $0 }}'

详情
一些属性值(例如 java.library.path)包含换行符,因此我们需要在过滤和打印记录之前标记记录。
sed 允许我们做到这一点,然后 awk 可以用于过滤和打印。

java -XshowSettings:properties -version 2>&1 |\
sed -re 's/^ +[^=]+ =/_&/' |\
gawk -v key=java.library.path 'BEGIN{ RS="_"; IFS=" = "} { if($1 ~ key){ print $0 }}'

结果:

    java.library.path = /usr/java/packages/lib/amd64
/usr/lib64
/lib64
/lib
/usr/lib

管道部件说明:

2>&1:属性被打印到 stderr,因此我们需要将它们重定向到 stdin。

sed -re 's/^ +[^=]+ =/_&/' :在感兴趣的行前面添加下划线,这些行以 4 个空格开头并包含 =.

gawk -v key=java.library.path:将keyawk变量设置为选定的属性键。

'开始{ RS="_"; IFS="= "}:设置记录分隔符为“_”,输入字段分隔符IFS为=

关于java - 如何在终端中访问 Java 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57399390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com