История изменений
Исправление mky, (текущая версия) :
По второму вопросу — coprocess, но это чёрная магия и лучше её не использовать:
#!/bin/bash
coproc ping -c 20 -n 127.0.0.1
for i in 1 2 3 4 5 6 7 8 9 A ; do
read var <&"${COPROC[0]}"
echo i is $i ";" var is $var
sleep 1
done
Примеры по вашей ссылки по первому вопросу основаны на том, что можно получить stdout и stdin через Process Substitution, но это будут подпроцессы, чтобы передать значения переменных в основной процесс их выводят через ″typeset -p″, а потом превращают в переменные через ″eval″. Лично я бы предпочёл использование временных файлов ( ″mktemp″), чем через год понимать что это за код, завёрнутый в ″eval″.
Исходная версия mky, :
По второму вопросу — coprocess, но это чёрная магия и лучше её не использовать:
#!/bin/bash
coproc ping -c 20 -n 127.0.0.1
for i in 1 2 3 4 5 6 7 8 9 A ; do
read var <&"${COPROC[0]}"
echo i is $i ";" var is $var
sleep 1
done
Примеры по вашей ссылки по первому вопросу основаны на том, что можно получить stdout и stdin через Process Substitution, но это будут подпроцессы, чтобы передать значения переменных в основной процесс их выводят через ″typeset -p″, а потом превращают в переменные через ″eval″. Лично я бы предпочёл использование временных файлов ( ″mktemp″), чем через год понимать что это за код, завёрнутый в ″eval″.