sub try_shell {
my $shell = shift;
print "line 1\n";
my $out = eval { capture($shell, '-c', 'echo good') };
print "line 2\n";
if ($out and $out =~ /^good$/) {
print "line 3\n";
if ($shell =~ /ksh/) {
print "line 4\n";
if (defined (my $version = eval { `$shell --version 2>&1` })) {
print "line 5\n";
if ($version =~ /version\s+sh\s+\(AT\&T\s+Research\)/) {
diag "skipping tests for broken AT&T ksh shell!";
return undef;
}
}
}
print "line 6\n";
if ($shell eq '!!fish') {
diag "TODO: add support for fish shell!";
return undef;
}
return 1;
}
return undef;
}
####
-bash-3.2$ sudo perl -Mblib t/quoting.t
line 1
line 2
line 3
line 6
line 1
line 2
line 3
line 6
line 1
line 2
line 3
line 6
line 1
line 2
line 3
line 6
line 1
line 2
line 3
line 4
^C
####
my @shells = grep try_shell($_), qw(sh csh bash tcsh ksh dash ash pdksh mksh zsh fish);