【发布时间】:2013-07-16 21:06:07
【问题描述】:
据我所知,我们可以使用 $? 来获取我们执行的命令的结果,如果程序员遵守约定,它将在错误时返回非零结果,在成功时返回 0 结果。
但是当我们运行 perl 脚本时呢?
我是 perl 的新手,但我认为 perl 脚本返回 1 如果它们是模块的一部分,否则它们不会返回任何东西。
那么我如何知道我运行的 perl 脚本发生了什么?
【问题讨论】:
据我所知,我们可以使用 $? 来获取我们执行的命令的结果,如果程序员遵守约定,它将在错误时返回非零结果,在成功时返回 0 结果。
但是当我们运行 perl 脚本时呢?
我是 perl 的新手,但我认为 perl 脚本返回 1 如果它们是模块的一部分,否则它们不会返回任何东西。
那么我如何知道我运行的 perl 脚本发生了什么?
【问题讨论】:
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
所以:
true 在 shell 中。false,$? 将为您提供退出值。die 从 perl 脚本中退出将是 shell 中的 false 和 $? 将是 255(在我的情况下 - 我检查过)。【讨论】:
die 终止Perl 程序会导致错误代码-1。不需要明确的exit。
die(); 将导致退出状态为 255。)
./test.pl && echo "OK" || echo $? echo $? 在失败时是 >0 但为什么在成功时打印 OK?