java - 如何从 "java -version"解析 java 的版本号并将其分配给远程主机上的变量?

标签 java linux parsing

我想通过单个命令获取 Linux 中的 Java 版本,然后将输出保存到变量中。

使用以下命令将变量分配给 java 的本地版本。我想在远程主机上运行 java -version,解析版本号,然后将输出保存到变量中。

ssh -q -t $server "OLDJAVA=`java -version 2>&1 | cut -s -d '"' -f2`"

最佳答案

您需要在远程主机上运行该命令并将本地变量设置为输出,ssh 将转发该输出:

OLDJAVA=$(ssh -q $server "java -version 2>&1 | cut -s -d '\"' -f2")

'\"' 响应向远程服务器发送转义引号的需要。(我在第一次迭代时错过了这一点。)但是,在本地计算机上进行重定向和后处理会更容易,因为 ssh 将同时传递 stdout 和 stderr。这会导致更简单

OLDJAVA=$(ssh -q $server java -version 2>&1 | cut -s -d \" -f2)

在这两种情况下,我都删除了 -t 选项,因为它似乎不需要。 -q 选项可能会产生比它解决的问题更多的问题(因为您肯定希望对 ssh 错误使用react。)

关于java - 如何从 "java -version"解析 java 的版本号并将其分配给远程主机上的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017383/

相关文章:

java - Junit java.lang.AssertionError : JSON path "$.reward"

java - VSCode 中的 "Classpath is incomplete. Only syntax errors will be reported"与 Java Play Eclipse 项目

递归统计目录中的所有文件(包括子目录中的文件)

linux - 由于进程 "/var/tmp/bbb/bbb",jenkins 自动终止

java - 如何提高以下java方法从链表中删除元素的性能

java - 如何在 Android 中 "wait"线程

mysql - 更新 mysql 配置变量 (ft_min_word_len)?

java - 如何解析包含与我用作分隔符相同的符号的字符串?

regex - 什么是用于删除换行符的跨平台正则表达式?

python - 如何在python中解析重组文本?