Я использую однострочники 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