Bash - 如何将参数传递给通过重定向标准输入读取的脚本

问题描述 投票:13回答:3

我想在“Bash - How to pass arguments to a script that is read via standard input”帖子上再扩展一点。

我想创建一个采用标准输入的脚本,并在向其传递参数的同时远程运行它。

我正在构建的脚本的简化内容:

ssh server_name bash <&0

如何采用以下接受参数的方法并将其应用于我的脚本?

cat script.sh | bash /dev/stdin arguments

也许我这样做不正确,请提供其他解决方案。

bash ssh
3个回答
15
投票

试试这个:

cat script.sh | ssh some_server bash -s - <arguments>

2
投票

ssh不应该有所作为:

$ cat do_x 
#!/bin/sh

arg1=$1
arg2=$2
all_cmdline=$*
read arg2_from_stdin

echo "arg1: ${arg1}"
echo "arg2: ${arg2}"
echo "all_cmdline: ${all_cmdline}"
echo "arg2_from_stdin: ${arg2_from_stdin}"

$ echo 'a b c' > some_file
$ ./do_x 1 2 3 4 5 < some_file 
arg1: 1
arg2: 2
all_cmdline: 1 2 3 4 5
arg2_from_stdin: a b c
$ ssh some-server do_x 1 2 3 4 5 < some_file
arg1: 1
arg2: 2
all_cmdline: 1 2 3 4 5
arg2_from_stdin: a b c

0
投票

ccartonanswer上的这个变种似乎运作良好:

ssh some_server bash -s - < script.sh <arguments>
© www.soinside.com 2019 - 2024. All rights reserved.