Linux + Perl 单行代码的退出状态

Linux + Perl 单行代码的退出状态

我在我的 ksh 脚本中使用 Perl 单行命令。

有时需要从 Perl 单行命令中获取退出状态,以验证 Perl 单行命令是否成功。

例如,我需要验证 Perl 单行代码中的“打印”是否成功。

但是即使 Perl 没有匹配单词“AAA 和 BBB”,在两种情况下 Perl 都会以状态 0 退出。

也许通过改变我的代码我可以得到退出状态 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

答案1

计算块中匹配的行数并根据该行设置退出代码END{...}

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

相关内容