Bash - Как передать аргументы в скрипт, который читается через перенаправленный стандартный ввод - PullRequest
13 голосов
/ 16 декабря 2011

Я хотел бы немного подробнее рассказать о " Bash - Как передать аргументы в сценарий, который читается через стандартную запись ".

Я хотел бы создать скрипткоторый принимает стандартный ввод и запускает его удаленно, передавая ему аргументы.

Упрощенное содержимое создаваемого сценария:

ssh server_name bash <&0

Как использовать следующий метод приема аргументови применить его к моему сценарию?

cat script.sh | bash /dev/stdin arguments

Может быть, я делаю это неправильно, пожалуйста, предоставьте альтернативные решения.

Ответы [ 3 ]

15 голосов
/ 16 декабря 2011

Попробуйте это:

cat script.sh | ssh some_server bash -s - <arguments>
2 голосов
/ 16 декабря 2011

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 голосов
/ 23 декабря 2017

Этот вариант для ccarton 's answer также, кажется, хорошо работает:

ssh some_server bash -s - < script.sh <arguments>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...