2016-06-23 47 views
0

我试图将stdin重定向到服务器上的ssh,但该脚本包含参数。使用参数重定向stdin脚本

我一个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") 

任何想法很多选项?

+0

看到[this](http://stackoverflow.com/questions/8528716/bash-how-to-pass-arguments-to-a-script-that-is-read-via-redirected-standard-在)? – s7amuser

+0

它工作吗? './docker-machine ssh machine <

+0

它不起作用。 –

回答

1

将一个命令的标准输出连接到另一个命令的标准输入的机制是管道。壳牌公司的运营商是|。如果我理解正确的是

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

,那么你想要的东西会是

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

(行分割可选)。

相反,

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

嗨。该脚本必须在VM中运行。 一位朋友给了我这个解决方案,它的工作原理。 './docker-machine ssh machine param1 =“param1”param2 =“param2”'sh -s'