我想通过单个命令获取 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/