【问题标题】:Issue with multiple -exec statements for find command under sshssh 下 find 命令的多个 -exec 语句问题
【发布时间】:2013-04-05 21:01:03
【问题描述】:

我整理了一个查找命令,它将查找系统上的所有 java 安装。它有 3 个 -exec 子句: 查找 / -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 脚本中可以正常工作。我尝试转义一些字段,但找不到解决方案。

有什么建议吗?

提前致谢。 斯科特

【问题讨论】:

    标签: ssh


    【解决方案1】:

    命令

    java -version
    

    将其输出发送到标准错误,而不是标准输出。

    您可以通过附加将标准错误重定向到标准输出

    2>&1
    

    到命令。例如

    ssh -T -o $USER@$ip_addr  "find / -name java -type f -exec ls -l {} \; -exec {} -version \; -exec echo \; 2>&1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      相关资源
      最近更新 更多