Назад | Перейти на главную страницу

Linux + статус выхода из однострочного кода Perl

Я использую однострочники Perl в своих сценариях ksh.

Иногда необходимо получить статус выхода из однострочника Perl, чтобы проверить, удалось ли однострочное исполнение Perl или нет.

Например, мне нужно проверить, удалась ли «печать» в однострочном коде Perl или нет.

Но Perl выйдет со статусом 0 в обоих случаях, даже если Perl не соответствует словам «AAA и BBB».

Возможно, изменив свой код, я смогу получить статус выхода 0 когда Perl успешно соответствует. И получить статус выхода 1 когда Perl не соответствует словам «AAA и BBB».

Это возможно?

more file
AAA BBB


perl -ne '/AAA/ && /BBB/ && print' file
AAA BBB

echo $?
0

 

more file1
ZZZ

perl -ne '/AAA/ && /BBB/ && print' file1
echo $?
 0

Подсчитайте совпадающие строки и установите код выхода на его основе в END{...} блок:

perl -ne '/AAA/ && /BBB/ && print && $MATCH++; END{exit 1 unless $MATCH>0}' file