我在我的 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