mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-26 07:57:58 +00:00
parallel --shebang-warp --pipe works. With test.
This commit is contained in:
parent
54e3e264a3
commit
eb3b6fb00e
18
src/parallel
18
src/parallel
|
@ -574,6 +574,7 @@ sub options_hash {
|
||||||
"wait" => \$::opt_wait,
|
"wait" => \$::opt_wait,
|
||||||
# Shebang #!/usr/bin/parallel --shebang
|
# Shebang #!/usr/bin/parallel --shebang
|
||||||
"shebang|hashbang" => \$::opt_shebang,
|
"shebang|hashbang" => \$::opt_shebang,
|
||||||
|
"--internal-pipe-means-argfiles" => \$::opt_internal_pipe_means_argfiles,
|
||||||
"Y" => \$::opt_retired,
|
"Y" => \$::opt_retired,
|
||||||
"skip-first-line" => \$::opt_skip_first_line,
|
"skip-first-line" => \$::opt_skip_first_line,
|
||||||
"header=s" => \$::opt_header,
|
"header=s" => \$::opt_header,
|
||||||
|
@ -606,7 +607,7 @@ sub get_options_from_array {
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20121122;
|
$Global::version = 20121123;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
$Global::debug = 0;
|
$Global::debug = 0;
|
||||||
|
@ -941,7 +942,7 @@ sub read_options {
|
||||||
my $parser = shift @ARGV;
|
my $parser = shift @ARGV;
|
||||||
my $scriptfile = shell_quote_scalar(shift @ARGV);
|
my $scriptfile = shell_quote_scalar(shift @ARGV);
|
||||||
# exec myself to split $ARGV[0] into separate fields
|
# exec myself to split $ARGV[0] into separate fields
|
||||||
exec "$0 $parser $scriptfile ::: @ARGV";
|
exec "$0 --internal-pipe-means-argfiles $parser $scriptfile ::: @ARGV";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1027,7 +1028,14 @@ sub read_args_from_command_line {
|
||||||
push @group, $arg;
|
push @group, $arg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($group eq $Global::arg_sep) {
|
|
||||||
|
if($group eq $Global::arg_file_sep
|
||||||
|
or ($::opt_internal_pipe_means_argfiles and $::opt_pipe)
|
||||||
|
) {
|
||||||
|
# Group of file names on the command line.
|
||||||
|
# Append args into -a
|
||||||
|
push @::opt_a, @group;
|
||||||
|
} elsif($group eq $Global::arg_sep) {
|
||||||
# Group of arguments on the command line.
|
# Group of arguments on the command line.
|
||||||
# Put them into a file.
|
# Put them into a file.
|
||||||
# Create argfile
|
# Create argfile
|
||||||
|
@ -1038,10 +1046,6 @@ sub read_args_from_command_line {
|
||||||
seek $outfh, 0, 0;
|
seek $outfh, 0, 0;
|
||||||
# Append filehandle to -a
|
# Append filehandle to -a
|
||||||
push @::opt_a, $outfh;
|
push @::opt_a, $outfh;
|
||||||
} elsif($group eq $Global::arg_file_sep) {
|
|
||||||
# Group of file names on the command line.
|
|
||||||
# Append args into -a
|
|
||||||
push @::opt_a, @group;
|
|
||||||
} else {
|
} else {
|
||||||
::die_bug("Unknown command line group: $group");
|
::die_bug("Unknown command line group: $group");
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,9 +47,9 @@ print "Shebang from perl with args @ARGV\n";
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 755 /tmp/pipe--shebang-wrap
|
chmod 755 /tmp/pipe--shebang-wrap
|
||||||
# Suboptimal
|
echo Suboptimal
|
||||||
/tmp/pipe--shebang-wrap :::: /tmp/in12 /tmp/in45
|
/tmp/pipe--shebang-wrap :::: /tmp/in12 /tmp/in45
|
||||||
# Optimal
|
echo Optimal
|
||||||
/tmp/pipe--shebang-wrap /tmp/in12 /tmp/in45
|
/tmp/pipe--shebang-wrap /tmp/in12 /tmp/in45
|
||||||
echo "### Same as"
|
echo "### Same as"
|
||||||
parallel --pipe /usr/bin/perl\ -p /tmp/pipe--shebang-wrap :::: /tmp/in12 /tmp/in45
|
parallel --pipe /usr/bin/perl\ -p /tmp/pipe--shebang-wrap :::: /tmp/in12 /tmp/in45
|
||||||
|
|
Loading…
Reference in a new issue