Используя подстановку процесса, отправьте только stderr процессу

Аргументы сценария оболочки - это всего лишь $ 1, $ 2, $ 3 и так далее. Например, введите echo $ 2; echo $ 1 в файле script.sh, сделайте его исполняемым и запустите как ./script.sh one two.

В вашем скрипте:

i = $ 1

a = $ 2

y = $ 3

и запустите его как ./ myscript.sh 3 4 23 . Теперь мне будет 3, a будет 4, а y будет 23.

0
08.05.2018, 07:55
1 ответ

Вы установили перенаправления в неправильном порядке. Стандартный вывод второй подстановки процесса (, который имеет префикс stderr:), имеет свой стандартный вывод с префиксом первой подстановки процесса, потому что он был запущен позже.

Попробуйте вместо этого:

exec 2> >( while read line; do echo " stderr: $line"; done )
exec > >( while read line; do echo " stdout: $line"; done )

echo "rolo"
echo "cholo" >&2

Этот вывод

 stderr: cholo
 stdout: rolo

чего, я полагаю, вы и хотите.

3
28.01.2020, 02:23

Теги

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