【问题标题】:How to "inject" lines into a here doc redirect?如何将行“注入”到此处的文档重定向中?
【发布时间】:2017-06-09 15:55:59
【问题描述】:

我有一个 BASH 函数execute,它通过 SSH 与机器建立连接,并执行通过此处 doc 重定向提供的一系列命令。这很好用。有没有办法将一些命令注入重定向?我想在例如之前总是运行prepare_something do_something.

function execute() {
    ssh user@host /bin/bash
}

execute << EOF
    do_something
EOF

【问题讨论】:

  • 一个更具体的例子会有所帮助。您只是想连接字符串还是组合它们?
  • 举个例子说明你希望它如何工作,尤其是你想为你的函数提供命令的地方

标签: linux bash pipe sh


【解决方案1】:

您可以使用子shell 将 echo 与消耗函数标准输入的 cat 结合起来。然后子shell的输出就变成了你的ssh命令的输入。

function execute() {
    ( echo prepare_something ; cat ) | ssh user@host /bin/bash
}

【讨论】:

  • ++;并不是说它会在实践中产生任何明显的差异,而是 group 命令 将代替子shell:{ echo prepare_something; cat; }
  • @mklement0,是的,很好的建议。组命令不会创建新进程。
  • 谢谢比尔!这完美! @mklement0 感谢您教我组命令!
猜你喜欢
  • 2017-08-11
  • 2016-06-01
  • 2016-04-04
  • 2018-01-12
  • 2019-10-29
  • 2013-06-30
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多