如何测试嵌入在bash脚本中的perl命令是否返回true?

Eli*_*Eli 1 bash perl

所以,我有一个bash脚本,其中我想要一个条件,这取决于perl脚本返回的内容.我的代码背后的想法如下:

for i in $(ls); do
    if $(perl -e "if (\$i =~ /^.*(bleh|blah|bluh)/) {print 'true';}"); then
       echo $i;
   fi;
done
Run Code Online (Sandbox Code Playgroud)

目前,这总是返回true,当我在if语句周围尝试[[]]时,我遇到了错误.任何人的想法?

Ps我知道我可以用grep做到这一点,但这只是一个例子.我想知道如何让Bash一般使用Perl输出

Pps我知道我可以用两行来做,将perl输出设置为变量,然后测试该变量值,但我宁愿避免使用那个额外的变量.似乎很浪费.

Mat*_*hen 8

如果使用exit,则可以直接使用if.例如

if perl -e "exit 0 if (successful); exit 1"; then
   echo $i;
fi;
Run Code Online (Sandbox Code Playgroud)

0表示成功,非零表示失败,如果不调用exit,则0表示默认值.

  • @Daenyth,阅读问题:"我想知道如何让Bash一般使用Perl输出" (2认同)