我有以下perl line line line
echo $line | perl -ne 'while(.....){print "$_";}' >> $FILE
可以给$?关于perl行的输出
所以
$? = 0 in case $_ print some value
$? = 1 in case $_ is empty ( no value )
示例:
echo $line | perl -ne 'while(.....){print "$_";}' >> $FILE
if [[ $? -eq 0 ]]
then
echo " new line in file "
else
echo " no new line in file"
fi
完整语法
/usr/local/bin/perl -ne '$exit = 1;while($_=~m/(?:^|\G:\K)(?:(?!.*old)[^:]+|[^:]*?(?:[a-z]old|\dold[a-z\d])[^:]*)/ig){print "$_";}'
答案 0 :(得分:1)
echo "$line" | perl -ne 'BEGIN {$exit = 1;}
if(/(?:^|\G:\K)(?:(?!.*old)[^:]+|[^:]*?(?:[a-z]old|\dold[a-z\d])[^:]*)/i) {$exit=0; print "$_"; }
END {exit($exit);}' >> "$FILE"
传递给exit()
的值将位于shell中的$?
。
由于您使用-n
自动创建输入循环,因此您需要将代码初始化并返回$exit
和BEGIN
块中的END
。您也不应该在代码中添加while
,因为这是自动循环的一部分。