Вы также можете использовать встроенный 'вызывающий' 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
Кажется, они оба работают:
bash <(echo 'echo "first: $1 second: $2"') '111' '222'
и
bash -s '111' '222' < <(echo 'echo "first: $1 second: $2"')
похоже на первый, bash читает из файлового дескриптора с первого аргумента, во втором читает со стандартного ввода.
Вы можете использовать подстановку процесса и перенаправить полученный скрипт на стандартный ввод 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.