【问题标题】:Remote ssh command with arguments [duplicate]带参数的远程 ssh 命令 [重复]
【发布时间】:2018-06-19 09:26:51
【问题描述】:

我知道我可以使用 ssh -t login@machine "command" 从另一台机器远程运行命令,但是我正在努力运行这样更复杂的命令:

 watch  "ps aux  | awk '{print $1}' | grep php-fpm | wc -l"

我正在尝试使用不同类型的引号,但是虽然 watch 命令似乎正在触发,但它显示的错误如下:

awk:命令。行:1:{打印 awk:cmd。行:1:
^ 意外的换行符或结束
字符串

【问题讨论】:

    标签: bash awk ssh remote-access remote-server


    【解决方案1】:

    问题是$ 在传递给ssh 命令之前由shell 扩展。在将其传递给ssh as

    之前,您需要通过转义它来剥夺它的特殊含义本地
    ssh -t login@machine watch "ps aux | awk '{print \$1}' | grep php-fpm | wc -l"
    

    您看到的错误是因为当 shell 尝试扩展 $1 时,它找不到它的值并留下一个空字符串,这导致传递给 awk 的参数数量不正确。

    您也可以用简单的逻辑替换包含awkgrep 的shell 管道

    ssh -t login@machine watch "ps aux | awk '\$1 == \"php-fpm\"{count++}END{print count}'
    

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2021-02-23
      • 2021-01-29
      • 2011-10-26
      相关资源
      最近更新 更多