#регулярные_выражения #perl
Есть ли возможность вернуть из Perl exit code отличный от 0, если не произошло замены текста, когда Perl работает в режиме sed с опциями -pe? В этом примере хотелось бы вернуть не ноль, для дальнейшего code workflow в SHELL скрипте: echo "xxx xxx" | perl -pe 's/yyy/zzz/'
Ответы
Ответ 1
Оператор замены возвращает количество произведенных замен, поэтому мы можем посчитать их в переменной. Это происходит в скрытом цикле, который добавляет ключ -p, поэтому сразу вернуть это количество не получится. Мы можем перехватить момент завершения программы создав блок END, в котором можно менять код завершения программы, находящийся в $?. echo "xxx xxx" | perl -pe '$c+=s/yyy/zzz/; END { $?=$c }' && echo "No replacement" Данный пример выведет "No replacement", так как замены не произошли.
Комментариев нет:
Отправить комментарий