Я бы хотел перенаправить поток вывода команды в функцию, поэтому я сделал это:
function aClassicCommand {
sleep 1
echo "this is logs"
}
##############################
function logsReceiver {
read IN
echo "received logs: $IN"
}
aClassicCommand | logsReceiver &
# doing stuff in parallel
wait
Проблема в том, что logsReceiver
больше не имеет доступа к внешним переменным:
function aClassicCommand {
sleep 1
echo "this is logs"
}
##############################
var=0
function logsReceiver {
read IN
echo "received logs: $IN"
# prints "in subshell var=0" and not "in subshell var=1"
echo "in subshell var=$var"
}
aClassicCommand | logsReceiver &
var=1
echo "var=$var"
wait
Вывод:
var = 1
полученные журналы: это журналы
в подоболочке var = 0
, ноЯ хочу это:
var = 1
полученные журналы: это журналы
в subshell var = 1
Как я могу решить это?
Спасибо.