在/bin/sh
和/bin/bash
(我猜还有很多其他的 shell)中,用启动脚本#!/bin/sh -e
(或set -e
在脚本中的某个位置执行)会导致脚本中止,当脚本内的任何命令行以不同于 0 的状态代码退出时。
在 perl 脚本中是否有任何等效或解决方法来获得相同的行为?(即,如果任何指令生成错误,或者任何使用system(...)
或反引号执行的外部命令返回错误代码,则立即退出)
答案1
看着那(这自动模具核心模块。这将用失败时终止的函数替换像open
和fork
这样的调用。要使其与 一起工作system
,您需要导入:all
或:system
,因为默认情况下不会这样做。
use strict; #always!
use warnings; #always!
use autodie qw(:system);
system('/bin/false'); #This will die
print "This will never be printed\n";
需要注意的是,要autodie
使用system
,您需要该IPC::System::Simple
模块。使用 CPAN 安装它,或者在 Ubuntu 上也可以sudo apt-get install libipc-system-simple-perl
。