Как добавить 1-й/2-й аргумент в сценарий bash, полученный из стандартного ввода

Вы также можете использовать встроенный 'вызывающий' bash:

#!/bin/bash

err_report() {
  echo "errexit on line $(caller)" >&2
}

trap err_report ERR

echo hello | grep foo

имя файла также печатается:

$./test.sh
errexit on line 9./test.sh
0
06.09.2019, 19:43
2 ответа

Кажется, они оба работают:

bash <(echo 'echo "first: $1 second: $2"') '111' '222'

и

bash -s '111' '222' < <(echo 'echo "first: $1 second: $2"')

похоже на первый, bash читает из файлового дескриптора с первого аргумента, во втором читает со стандартного ввода.

0
28.01.2020, 02:29

Вы можете использовать подстановку процесса и перенаправить полученный скрипт на стандартный ввод Bash:

$ bash -s 'first argument' 'second argument' < <(echo 'printf "%s\n" "$@"')
first argument
second argument

Замените команду echoна curl, и все готово.

Изman bash:

If the -s option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell.

2
28.01.2020, 02:29

Теги

Похожие вопросы