Я устанавливаю переменные в цикле, который находится в конвейере. Почему они исчезают после завершения цикла? Или почему я не могу передать данные для чтения?

я есть такой код

var="before"  
echo "$someString" | sed '$someRegex' | while read line 
do
    if [ $condition ]; then
        var="after"
        echo "$var" #first echo
    fi 
done 
echo "$var" #second echo

Здесь первый вывод эха «после», а второй «до». Как я могу сделать вторую эхо-печать "после". Я думаю, что это из-за покупки трубы, я не знаю, как понять.

Спасибо за любые решения ...

Редактировать ответ:

Я исправил это, и он отлично работает. Спасибо Евгений за ваш полезный ответ

var="before"  
while read line 
do
    if [ $condition ]; then
        var="after"
        echo "$var" #first echo
    fi 
done < <(echo "$someString" | sed '$someRegex')
echo "$var" #second echo

Ответы на вопрос(1)

Ваш ответ на вопрос