通过 ssh 重定向多个脚本的输入

通过 ssh 重定向多个脚本的输入

我在终端中有这个工作命令(请记住,ssh 到 localhost 是为了测试 - 无论它是否是远程服务器都没有区别):

> ssh [email protected] sh -s -- < "./a.sh" < "./b.sh"

灰:

export var="hey world"

b.sh:

echo "$var"

按预期打印“hey world”。

但是当我将相同的命令添加到这样的脚本文件中时(假设它名为run.sh):

#!/bin/sh

# ...
ssh [email protected] sh -s -- < "./a.sh" < "./b.sh"

我执行如下:

chmod +x ./run.sh
./run.sh

它不起作用 - 打印了一个空白行。我测试了其他命令,它们同样似乎没有被读取。

这是怎么回事?


编辑:我应该澄清一下,我已经用 Cornholio 给出的相同答案解决了这个问题,但我想确切地知道是什么原因导致它通过 REPL 而不是在 shell 脚本文件中工作

答案1

/bin/sh您可能在命令行测试中使用了不同于的 shell 。您的问题是 中的重定向支持/bin/sh。我发现无法将两个文件的内容附加到stdin。要查看发生了什么,您可以将ssh命令替换为cat

> cat < "./a.sh" < "./b.sh"
echo "$var"

> cat < "./a.sh" 
export var="hey world"

> cat < "./b.sh" 
echo "$var"

怎么样?cat a.sh b.sh ... | ssh [email protected]

相关内容