2

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

4

1 回答 1

7

Perl 脚本从 shell 运行时的行为相同。有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

所以:

  • 以 0(或无)退出 perl 脚本将true在 shell 中。
  • 从 perl 脚本中以 0 以外的(字节)值退出将false在 shell 中并$?为您提供退出值。
  • 从 perl 脚本中退出diefalse在 shell 中,$?将是 255(在我的情况下 - 我检查了它)。
于 2013-07-16T21:12:36.380 回答