Linux

Linux + Perl 單行程式碼的退出狀態

  • July 5, 2018

我在我的 ksh 腳本中使用 Perl 單行語句。

有時需要從 Perl one-liner 獲取退出狀態,以驗證 Perl one-liner 是否成功。

例如,我需要驗證 Perl 單行程式碼中的“列印”是否成功。

但是即使 Perl 不匹配單詞“AAA 和 BBB”,Perl 在這兩種情況下都會以狀態 0 退出。

也許通過更改我的程式碼,當 Perl 匹配成功時,我可以獲得退出狀態 0 。當 Perl 與單詞“AAA 和 BBB”不匹配時,獲得退出狀態 1 。

這可能嗎?

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

引用自:https://serverfault.com/questions/504362