我整理了一个 find 命令,它将查找系统上的所有 java 安装。它有 3 个 -exec 子句: find / -name java -type f -exec ls -l {} \; -exec {} -版本\; -执行回声\;
从命令提示符运行时,它会生成如下输出:
-rwxr-xr-x 1 root root 47308 Oct 11 2009 ./usr/java/jre1.6.0_17/bin/java
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
-rwxr-xr-x 1 root root 47308 Nov 14 06:27 ./usr/java/jdk1.6.0_38/bin/java
java version "1.6.0_38"
Java(TM) SE Runtime Environment (build 1.6.0_38-b05)
Java HotSpot(TM) Server VM (build 20.13-b02, mixed mode)
我遇到的问题是从 ssh 运行命令时未生成 java 版本。
ssh -T -o $USER@$ip_addr "find / -name java -type f -exec ls -l {} \; -exec {} -version \; -exec echo \;"
-rwxr-xr-x 1 root root 47308 Oct 11 2009 ./usr/java/jre1.6.0_17/bin/java
-rwxr-xr-x 1 root root 47308 Nov 14 06:27 ./usr/java/jdk1.6.0_38/bin/java
执行第一个 -exec 子句 (ls -l)。第二个 -exec 子句不起作用(java -version)。第三个 -exec 子句被执行(回显)。
问题出在 ssh 命令上。这在 shell 脚本中可以正常工作。我尝试转义一些字段,但找不到解决方案。
有什么建议么?
提前致谢。斯科特