perl one liner +如何在perl线衬垫上提供标准输出

时间:2014-07-13 14:59:00

标签: linux bash perl

我有以下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 "$_";}' 

1 个答案:

答案 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自动创建输入循环,因此您需要将代码初始化并返回$exitBEGIN块中的END 。您也不应该在代码中添加while,因为这是自动循环的一部分。