使用参数重定向stdin脚本

时间:2016-06-23 19:59:43

标签: bash makefile stdin docker-machine

我正在尝试将stdin重定向到服务器上的ssh,但脚本包含参数。

我在Makefile中执行此操作

./docker-machine ssh machine < scripts/provision-docker-images.sh "param1" "param2"

我尝试了很多选项,比如

 < $(scripts/provision-docker-images.sh "param1" "param2")
 <(scripts/provision-docker-images.sh "param1" "param2")

任何想法?

1 个答案:

答案 0 :(得分:1)

将一个命令的标准输出连接到另一个命令的标准输入的机制是管道。 shell的运算符是|。如果我理解正确

  • 该脚本应该在本地主机上运行
  • docker-machine ssh将通过ssh连接将自己的标准输入转发到远程shell

然后你想要的是什么

scripts/provision-docker-images.sh "param1" "param2" \
    | ./docker-machine ssh machine

(行拆分可选)。

相比之下,

  • 重定向操作符<用于重定向命令的标准输入以来自文件;
  • 命令替换运算符$(...)用于扩展命令的输出以形成部分另一个命令(类似于参数扩展);
  • 进程替换运算符<(...)用于创建文件名,从中可以读取命令的输出(即指定FIFO的读取结束)。