perl脚本的状态从bash脚本运行

时间:2013-07-16 21:06:08

标签: linux perl bash shell

据我所知,我们可以使用$?来获取我们执行的命令的结果,如果程序员保持约定,它将在错误时返回非零结果,并在成功时返回0结果。
但是当我们运行perl脚本时呢? 我是perl中的新手,但我认为perl脚本如果是模块的一部分则返回1,否则它们不会返回任何内容。
那么我怎么知道我运行的perl脚本发生了什么?

1 个答案:

答案 0 :(得分:7)

从shell运行时,Perl脚本的行为相同。 test.pl

#!/usr/bin/env perl
exit(0); # or just exit

运行:

./test.pl && echo "OK" || echo $?
OK

具有

#!/usr/bin/env perl
exit(123);

运行:

./test.pl && echo "OK" || echo $?
123

具有

#!/usr/bin/env perl
die;

运行:

./test.pl && echo "OK" || echo $?
Died at ./test.pl line 2.
255

所以:

  • 从perl脚本退出0(或没有)将在shell中true
  • 退出perl脚本,其中(byte)值不是0,在shell中为false$?将为您提供退出值。
  • 使用die从perl脚本退出,false将在shell中,$?将为255(在我的情况下 - 我检查过它)。