mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-25 23:47:53 +00:00
parallel --shebang-warp for ::: works.
This commit is contained in:
parent
45763bc601
commit
0b1896c368
25
src/parallel
25
src/parallel
|
@ -923,13 +923,26 @@ sub read_options {
|
||||||
# @ARGV without --options
|
# @ARGV without --options
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
if(defined $ARGV[0] and ($ARGV[0]=~/^--shebang / or
|
if(defined $ARGV[0] and ($ARGV[0]=~/^--shebang / or
|
||||||
$ARGV[0]=~/^--hashbang /)) {
|
$ARGV[0]=~/^--shebang-wrap / or
|
||||||
|
$ARGV[0]=~/^--hashbang /)) {
|
||||||
# Program is called from #! line in script
|
# Program is called from #! line in script
|
||||||
$ARGV[0]=~s/^--shebang *//; # remove --shebang if it is set
|
# remove --shebang-wrap if it is set
|
||||||
$ARGV[0]=~s/^--hashbang *//; # remove --hashbang if it is set
|
$::opt_shebang_wrap = ($ARGV[0]=~s/^--shebang-?wrap *//);
|
||||||
my $argfile = shell_quote_scalar(pop @ARGV);
|
# remove --shebang if it is set
|
||||||
# exec myself to split $ARGV[0] into separate fields
|
$::opt_shebang = ($ARGV[0]=~s/^--shebang *//);
|
||||||
exec "$0 --skip-first-line -a $argfile @ARGV";
|
# remove --hashbang if it is set
|
||||||
|
$::opt_shebang .= ($ARGV[0]=~s/^--hashbang *//);
|
||||||
|
if($::opt_shebang) {
|
||||||
|
my $argfile = shell_quote_scalar(pop @ARGV);
|
||||||
|
# exec myself to split $ARGV[0] into separate fields
|
||||||
|
exec "$0 --skip-first-line -a $argfile @ARGV";
|
||||||
|
}
|
||||||
|
if($::opt_shebang_wrap) {
|
||||||
|
# exec myself to split $ARGV[0] into separate fields
|
||||||
|
my $parser = shell_quote_scalar(shift @ARGV);
|
||||||
|
my $scriptfile = shell_quote_scalar(shift @ARGV);
|
||||||
|
exec "$0 $parser $scriptfile ::: @ARGV";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Getopt::Long::Configure("bundling","pass_through");
|
Getopt::Long::Configure("bundling","pass_through");
|
||||||
|
|
27
testsuite/tests-to-run/parallel-local21.sh
Normal file
27
testsuite/tests-to-run/parallel-local21.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "### Test basic --shebang-wrap"
|
||||||
|
cat <<EOF > /tmp/test--shebang-wrap
|
||||||
|
#!/usr/local/bin/parallel --shebang-wrap /usr/bin/perl
|
||||||
|
|
||||||
|
print "Shebang from perl with args @ARGV\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 755 /tmp/test--shebang-wrap
|
||||||
|
/tmp/test--shebang-wrap arg1 arg2
|
||||||
|
echo "### Same as"
|
||||||
|
parallel /usr/bin/perl /tmp/test--shebang-wrap ::: arg1 arg2
|
||||||
|
|
||||||
|
echo "### Test --shebang-wrap with parser options"
|
||||||
|
cat <<EOF > /tmp/test--shebang-wrap
|
||||||
|
#!/usr/local/bin/parallel --shebang-wrap /usr/bin/perl -p
|
||||||
|
|
||||||
|
print "Shebang from perl with args @ARGV\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 755 /tmp/test--shebang-wrap
|
||||||
|
/tmp/test--shebang-wrap <(seq 2) <(seq 11 12)
|
||||||
|
echo "### Same as"
|
||||||
|
parallel /usr/bin/perl\ -p /tmp/test--shebang-wrap ::: <(seq 2) <(seq 11 12)
|
||||||
|
|
||||||
|
|
24
testsuite/wanted-results/parallel-local21
Normal file
24
testsuite/wanted-results/parallel-local21
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
### Test basic --shebang-wrap
|
||||||
|
Shebang from perl with args arg1
|
||||||
|
Shebang from perl with args arg2
|
||||||
|
### Same as
|
||||||
|
Shebang from perl with args arg1
|
||||||
|
Shebang from perl with args arg2
|
||||||
|
### Test --shebang-wrap with parser options
|
||||||
|
Shebang from perl with args
|
||||||
|
1
|
||||||
|
Shebang from perl with args
|
||||||
|
2
|
||||||
|
Shebang from perl with args
|
||||||
|
11
|
||||||
|
Shebang from perl with args
|
||||||
|
12
|
||||||
|
### Same as
|
||||||
|
Shebang from perl with args
|
||||||
|
1
|
||||||
|
Shebang from perl with args
|
||||||
|
2
|
||||||
|
Shebang from perl with args
|
||||||
|
11
|
||||||
|
Shebang from perl with args
|
||||||
|
12
|
Loading…
Reference in a new issue