Запустите скрипт, переданный из stdin (Linux / Shell Scripting) - PullRequest
11 голосов
/ 01 апреля 2012

Предположим, у меня есть скрипт: my_script.sh

Вместо того, чтобы делать

./my_script.sh

Я хочу сделать что-то вроде:

cat my_script.sh | <some command here>

такой, что скрипт выполняется. Это возможно?

Вариант использования: если скрипт, который я хочу выполнить, является выводом wget или s3cat и т. Д. Прямо сейчас я сохраняю его во временном файле, изменяю на исполняемый, а затем запускаю. Есть ли способ сделать это напрямую?

Ответы [ 3 ]

19 голосов
/ 01 апреля 2012

Просто перенаправьте его в вашу любимую оболочку, например:

$ cat my_script.sh
set -x
echo hello
$ cat my_script.sh | sh
+ echo hello
hello

(* set -x заставляет оболочку распечатывать каждую инструкцию, которую она собирается выполнить, до того, как она будет запущена, удобно для отладки, ноэто не имеет ничего общего с вашей проблемой - просто там для демонстрационных целей.)

5 голосов
/ 02 апреля 2012

Вы можете использовать:

cat my_script.sh | xargs -i <some_command> {}

или:

cat my_script.sh | bash -
1 голос
/ 02 апреля 2012

RVM рекомендует этот метод для запуска их установщика :

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...