mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-26 07:57:58 +00:00
Fixed bug #33630: -L and -N do not do context replace.
--bner alias for --basenameextensionreplace.
This commit is contained in:
parent
3c7e1c4616
commit
fe8a8aa41b
59
src/parallel
59
src/parallel
|
@ -24,7 +24,7 @@ parse_options();
|
||||||
my $number_of_args;
|
my $number_of_args;
|
||||||
if($Global::max_number_of_args) {
|
if($Global::max_number_of_args) {
|
||||||
$number_of_args=$Global::max_number_of_args;
|
$number_of_args=$Global::max_number_of_args;
|
||||||
} elsif ($Global::Xargs or $Global::xargs) {
|
} elsif ($::opt_X or $::opt_m) {
|
||||||
$number_of_args = undef;
|
$number_of_args = undef;
|
||||||
} else {
|
} else {
|
||||||
$number_of_args = 1;
|
$number_of_args = 1;
|
||||||
|
@ -89,7 +89,7 @@ if($::opt_nonall or $::opt_onall) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$Global::JobQueue = JobQueue->new(
|
$Global::JobQueue = JobQueue->new(
|
||||||
$command,\@fhlist,$Global::Xargs,$number_of_args,\@Global::ret_files);
|
$command,\@fhlist,$Global::ContextReplace,$number_of_args,\@Global::ret_files);
|
||||||
if($::opt_eta) {
|
if($::opt_eta) {
|
||||||
# Count the number of jobs before starting any
|
# Count the number of jobs before starting any
|
||||||
$Global::JobQueue->total_jobs();
|
$Global::JobQueue->total_jobs();
|
||||||
|
@ -336,7 +336,8 @@ sub options_hash {
|
||||||
# Returns a hash of the GetOptions config
|
# Returns a hash of the GetOptions config
|
||||||
return
|
return
|
||||||
("debug|D" => \$::opt_D,
|
("debug|D" => \$::opt_D,
|
||||||
"xargs|m" => \$::opt_m,
|
"xargs" => \$::opt_xargs,
|
||||||
|
"m" => \$::opt_m,
|
||||||
"X" => \$::opt_X,
|
"X" => \$::opt_X,
|
||||||
"v" => \@::opt_v,
|
"v" => \@::opt_v,
|
||||||
"joblog=s" => \$::opt_joblog,
|
"joblog=s" => \$::opt_joblog,
|
||||||
|
@ -350,7 +351,7 @@ sub options_hash {
|
||||||
"extensionreplace|U=s" => \$::opt_U,
|
"extensionreplace|U=s" => \$::opt_U,
|
||||||
"basenamereplace|bnr=s" => \$::opt_basenamereplace,
|
"basenamereplace|bnr=s" => \$::opt_basenamereplace,
|
||||||
"dirnamereplace|dnr=s" => \$::opt_dirnamereplace,
|
"dirnamereplace|dnr=s" => \$::opt_dirnamereplace,
|
||||||
"basenameextensionreplace=s" => \$::opt_basenameextensionreplace,
|
"basenameextensionreplace|bner=s" => \$::opt_basenameextensionreplace,
|
||||||
"seqreplace=s" => \$::opt_seqreplace,
|
"seqreplace=s" => \$::opt_seqreplace,
|
||||||
"jobs|j=s" => \$::opt_P,
|
"jobs|j=s" => \$::opt_P,
|
||||||
"load=f" => \$::opt_load,
|
"load=f" => \$::opt_load,
|
||||||
|
@ -453,7 +454,7 @@ sub get_options_from_array {
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20110622;
|
$Global::version = 20110709;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
$Global::debug = 0;
|
$Global::debug = 0;
|
||||||
|
@ -483,8 +484,7 @@ sub parse_options {
|
||||||
|
|
||||||
if(defined @::opt_v) { $Global::verbose = $#::opt_v+1; } # Convert -v -v to v=2
|
if(defined @::opt_v) { $Global::verbose = $#::opt_v+1; } # Convert -v -v to v=2
|
||||||
$Global::debug = (defined $::opt_D);
|
$Global::debug = (defined $::opt_D);
|
||||||
if(defined $::opt_m) { $Global::xargs = 1; }
|
if(defined $::opt_X) { $Global::ContextReplace = 1; }
|
||||||
if(defined $::opt_X) { $Global::Xargs = 1; }
|
|
||||||
if(defined $::opt_silent) { $Global::verbose = 0; }
|
if(defined $::opt_silent) { $Global::verbose = 0; }
|
||||||
if(defined $::opt_k) { $Global::keeporder = 1; }
|
if(defined $::opt_k) { $Global::keeporder = 1; }
|
||||||
if(defined $::opt_g) { $Global::grouped = 1; }
|
if(defined $::opt_g) { $Global::grouped = 1; }
|
||||||
|
@ -510,7 +510,6 @@ sub parse_options {
|
||||||
}
|
}
|
||||||
if(defined $::opt_E) { $Global::end_of_file_string = $::opt_E; }
|
if(defined $::opt_E) { $Global::end_of_file_string = $::opt_E; }
|
||||||
if(defined $::opt_n) { $Global::max_number_of_args = $::opt_n; }
|
if(defined $::opt_n) { $Global::max_number_of_args = $::opt_n; }
|
||||||
if(defined $::opt_N) { $Global::max_number_of_args = $::opt_N; }
|
|
||||||
if(defined $::opt_tmpdir) { $ENV{'TMPDIR'} = $::opt_tmpdir; }
|
if(defined $::opt_tmpdir) { $ENV{'TMPDIR'} = $::opt_tmpdir; }
|
||||||
if(defined $::opt_help) { die_usage(); }
|
if(defined $::opt_help) { die_usage(); }
|
||||||
if(defined $::opt_colsep) { $Global::trim = 'lr'; }
|
if(defined $::opt_colsep) { $Global::trim = 'lr'; }
|
||||||
|
@ -590,10 +589,21 @@ sub parse_options {
|
||||||
$Global::max_number_of_args ||= $Global::max_lines;
|
$Global::max_number_of_args ||= $Global::max_lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Read more than one arg at a time (-L, -N)
|
||||||
if(defined $::opt_L) {
|
if(defined $::opt_L) {
|
||||||
$Global::max_lines = $::opt_L;
|
$Global::max_lines = $::opt_L;
|
||||||
$Global::max_number_of_args ||= $Global::max_lines;
|
$Global::max_number_of_args ||= $Global::max_lines;
|
||||||
}
|
}
|
||||||
|
if(defined $::opt_N) {
|
||||||
|
$Global::max_number_of_args = $::opt_N;
|
||||||
|
$Global::ContextReplace = 1;
|
||||||
|
}
|
||||||
|
if((defined $::opt_L or defined $::opt_N)
|
||||||
|
and
|
||||||
|
not ($::opt_xargs or $::opt_m)) {
|
||||||
|
$Global::ContextReplace = 1;
|
||||||
|
}
|
||||||
|
|
||||||
%Global::replace_rev = reverse %Global::replace;
|
%Global::replace_rev = reverse %Global::replace;
|
||||||
|
|
||||||
if(grep /^$Global::arg_sep$|^$Global::arg_file_sep$/o, @ARGV) {
|
if(grep /^$Global::arg_sep$|^$Global::arg_file_sep$/o, @ARGV) {
|
||||||
|
@ -634,8 +644,7 @@ sub parse_options {
|
||||||
|
|
||||||
parse_sshlogin();
|
parse_sshlogin();
|
||||||
|
|
||||||
if(remote_hosts() and ($Global::xargs or $Global::Xargs)
|
if(remote_hosts() and ($::opt_X or $::opt_m or $::opt_xargs)) {
|
||||||
and not $::opt_N) {
|
|
||||||
# As we do not know the max line length on the remote machine
|
# As we do not know the max line length on the remote machine
|
||||||
# long commands generated by xargs may fail
|
# long commands generated by xargs may fail
|
||||||
# If opt_N is set, it is probably safe
|
# If opt_N is set, it is probably safe
|
||||||
|
@ -1646,22 +1655,23 @@ sub usage {
|
||||||
"Usage:",
|
"Usage:",
|
||||||
"$Global::progname [options] [command [arguments]] < list_of_arguments",
|
"$Global::progname [options] [command [arguments]] < list_of_arguments",
|
||||||
"$Global::progname [options] [command [arguments]] (::: arguments|:::: argfile(s))...",
|
"$Global::progname [options] [command [arguments]] (::: arguments|:::: argfile(s))...",
|
||||||
|
"cat ... | $Global::progname --pipe [options] [command [arguments]]",
|
||||||
"",
|
"",
|
||||||
"-j n Run n jobs in parallel",
|
"-j n Run n jobs in parallel",
|
||||||
"-k Keep same order",
|
"-k Keep same order",
|
||||||
"-X Multiple arguments with context replace",
|
"-X Multiple arguments with context replace",
|
||||||
"--colsep regexp Split input on regexp for positional replacements",
|
"--colsep regexp Split input on regexp for positional replacements",
|
||||||
"{} {.} {/} {/.} Replacement strings",
|
"{} {.} {/} {/.} {#} Replacement strings",
|
||||||
"{3} {3.} {3/} {3/.} Positional replacement strings",
|
"{3} {3.} {3/} {3/.} Positional replacement strings",
|
||||||
"",
|
"",
|
||||||
"-S sshlogin - e.g. foo\@server.example.com",
|
"-S sshlogin Example: foo\@server.example.com",
|
||||||
"--trc {}.bar Shorthand for --transfer --return {}.bar --cleanup",
|
"--trc {}.bar Shorthand for --transfer --return {}.bar --cleanup",
|
||||||
"--onall Run the given command with argument on all sshlogins",
|
"--onall Run the given command with argument on all sshlogins",
|
||||||
"--nonall Run the given command with no arguments on all sshlogins",
|
"--nonall Run the given command with no arguments on all sshlogins",
|
||||||
"",
|
"",
|
||||||
"--pipe Split stdin (standard input) to multiple jobs.",
|
"--pipe Split stdin (standard input) to multiple jobs.",
|
||||||
"--recend Record end separator for --pipe.",
|
"--recend str Record end separator for --pipe.",
|
||||||
"--recstart Record start separator for --pipe.",
|
"--recstart str Record start separator for --pipe.",
|
||||||
"",
|
"",
|
||||||
"See 'man $Global::progname' for details",
|
"See 'man $Global::progname' for details",
|
||||||
"");
|
"");
|
||||||
|
@ -4010,7 +4020,8 @@ sub get {
|
||||||
my $ret = $self->{'arg_sub_queue'}->get();
|
my $ret = $self->{'arg_sub_queue'}->get();
|
||||||
if(defined $Global::max_number_of_args
|
if(defined $Global::max_number_of_args
|
||||||
and $Global::max_number_of_args == 0) {
|
and $Global::max_number_of_args == 0) {
|
||||||
return [];
|
::debug("Read 1 but return 0 args\n");
|
||||||
|
return [Arg->new("")];
|
||||||
} else {
|
} else {
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
@ -4379,7 +4390,7 @@ sub trim_of {
|
||||||
for $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; }
|
for $arg (@strings) { $arg =~ s/^\s+//; $arg =~ s/\s+$//; }
|
||||||
} else {
|
} else {
|
||||||
print STDERR "$Global::progname: --trim must be one of: r l ".
|
print STDERR "$Global::progname: --trim must be one of: r l ".
|
||||||
"rl lr\n";
|
"rl lr\n";
|
||||||
::wait_and_exit(255);
|
::wait_and_exit(255);
|
||||||
}
|
}
|
||||||
return wantarray ? @strings : "@strings";
|
return wantarray ? @strings : "@strings";
|
||||||
|
|
|
@ -73,7 +73,9 @@ http://www.perlmonks.org/index.pl?node_id=484296).
|
||||||
=item B<{}> (still alpha testing)
|
=item B<{}> (still alpha testing)
|
||||||
|
|
||||||
Input line. This replacement string will be replaced by a full line
|
Input line. This replacement string will be replaced by a full line
|
||||||
read from the input source.
|
read from the input source. The input source is normally stdin
|
||||||
|
(standard input), but can also be given with B<-a>, B<:::>, or
|
||||||
|
B<::::>.
|
||||||
|
|
||||||
The replacement string B<{}> can be changed with B<-I>.
|
The replacement string B<{}> can be changed with B<-I>.
|
||||||
|
|
||||||
|
@ -194,9 +196,9 @@ To understand positional replacement strings see B<{>I<n>B<}>.
|
||||||
|
|
||||||
=item B<:::> I<arguments> (alpha testing)
|
=item B<:::> I<arguments> (alpha testing)
|
||||||
|
|
||||||
Use arguments from the command line as input source instead of from
|
Use arguments from the command line as input source instead of stdin
|
||||||
stdin (standard input). Unlike other options for GNU B<parallel>
|
(standard input). Unlike other options for GNU B<parallel> B<:::> is
|
||||||
B<:::> is placed after the I<command> and before the arguments.
|
placed after the I<command> and before the arguments.
|
||||||
|
|
||||||
The following are equivalent:
|
The following are equivalent:
|
||||||
|
|
||||||
|
@ -234,7 +236,7 @@ Another way to write B<-a> I<argfile1> B<-a> I<argfile2> ...
|
||||||
|
|
||||||
B<:::> and B<::::> can be mixed.
|
B<:::> and B<::::> can be mixed.
|
||||||
|
|
||||||
See B<-a>.
|
See B<-a> and B<:::>.
|
||||||
|
|
||||||
|
|
||||||
=item B<--null>
|
=item B<--null>
|
||||||
|
@ -261,7 +263,7 @@ contains B<a b c>. B<-a foo> B<-a bar> will result in the combinations
|
||||||
(1,a) (1,b) (1,c) (2,a) (2,b) (2,c). This is useful for replacing
|
(1,a) (1,b) (1,c) (2,a) (2,b) (2,c). This is useful for replacing
|
||||||
nested for-loops.
|
nested for-loops.
|
||||||
|
|
||||||
See also B<--xapply>
|
See also B<--xapply> and B<{>I<n>B<}>.
|
||||||
|
|
||||||
|
|
||||||
=item B<--arg-file-sep> I<sep-str>
|
=item B<--arg-file-sep> I<sep-str>
|
||||||
|
@ -306,6 +308,8 @@ basename of input line.
|
||||||
|
|
||||||
=item B<--basenameextensionreplace> I<replace-str>
|
=item B<--basenameextensionreplace> I<replace-str>
|
||||||
|
|
||||||
|
=item B<--bner> I<replace-str>
|
||||||
|
|
||||||
Use the replacement string I<replace-str> instead of B<{/.}> for basename of input line without extension.
|
Use the replacement string I<replace-str> instead of B<{/.}> for basename of input line without extension.
|
||||||
|
|
||||||
|
|
||||||
|
@ -603,7 +607,7 @@ next input line.
|
||||||
B<-L 0> means read one line, but insert 0 arguments on the command
|
B<-L 0> means read one line, but insert 0 arguments on the command
|
||||||
line.
|
line.
|
||||||
|
|
||||||
Implies B<-X> unless B<-m> is set.
|
Implies B<-X> unless B<-m> or B<--xargs> is set.
|
||||||
|
|
||||||
|
|
||||||
=item B<--max-lines>[=I<max-lines>]
|
=item B<--max-lines>[=I<max-lines>]
|
||||||
|
|
|
@ -8,8 +8,15 @@ ls -t tests-to-run/*.sh \
|
||||||
>$SHFILE
|
>$SHFILE
|
||||||
|
|
||||||
mkdir -p actual-results
|
mkdir -p actual-results
|
||||||
sh -x $SHFILE
|
stdout sh -x $SHFILE | tee testsuite.log
|
||||||
rm $SHFILE
|
rm $SHFILE
|
||||||
|
# If testsuite.log contains @@ then there is a diff
|
||||||
|
if grep -q '@@' testsuite.log ; then
|
||||||
|
false
|
||||||
|
else
|
||||||
|
# No @@'s: So everything worked: Copy the source
|
||||||
|
rm -rf src-passing-testsuite
|
||||||
|
cp -a ../src src-passing-testsuite
|
||||||
|
fi
|
||||||
|
rm testsuite.log
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,18 @@ echo "### Test --basenamereplace"
|
||||||
parallel -j1 -k -X --basenamereplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
parallel -j1 -k -X --basenamereplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
parallel -k --basenamereplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
parallel -k --basenamereplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
|
||||||
|
echo "### Test --bnr"
|
||||||
|
parallel -j1 -k -X --bnr FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
parallel -k --bnr FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
|
||||||
echo "### Test --basenameextensionreplace"
|
echo "### Test --basenameextensionreplace"
|
||||||
parallel -j1 -k -X --basenameextensionreplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
parallel -j1 -k -X --basenameextensionreplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
parallel -k --basenameextensionreplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
parallel -k --basenameextensionreplace FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
|
||||||
|
echo "### Test --bner"
|
||||||
|
parallel -j1 -k -X --bner FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
parallel -k --bner FOO echo FOO ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
|
||||||
echo "### Test {/}"
|
echo "### Test {/}"
|
||||||
parallel -j1 -k -X echo {/} ::: /a/b.c a/b.c b.c /a/b a/b b
|
parallel -j1 -k -X echo {/} ::: /a/b.c a/b.c b.c /a/b a/b b
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@ seq 9 | parallel -N 10 echo
|
||||||
echo '### Test -N is not broken by distribution - two lines'
|
echo '### Test -N is not broken by distribution - two lines'
|
||||||
seq 19 | parallel -k -N 10 echo
|
seq 19 | parallel -k -N 10 echo
|
||||||
|
|
||||||
|
echo '### Test -N context replace'
|
||||||
|
seq 19 | parallel -N 10 echo a{}b
|
||||||
|
|
||||||
|
echo '### Test -L context replace'
|
||||||
|
seq 19 | parallel -L 10 echo a{}b
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server3
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -k
|
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -j0 -k
|
||||||
echo '### Test --onall'
|
echo '### Test --onall'
|
||||||
parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3
|
parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2
|
||||||
echo '### Test | --onall'
|
echo '### Test | --onall'
|
||||||
seq 3 | parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c :::: -
|
seq 3 | parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c :::: -
|
||||||
echo '### Test --onall -u'
|
echo '### Test --onall -u'
|
||||||
|
@ -13,7 +13,7 @@ parallel --onall -S parallel@$SERVER2,$SERVER1 -u '(echo {3} {2}) | awk \{print\
|
||||||
echo '### Test --nonall'
|
echo '### Test --nonall'
|
||||||
parallel --nonall -k -S parallel@$SERVER2,$SERVER1 'hostname' | sort
|
parallel --nonall -k -S parallel@$SERVER2,$SERVER1 'hostname' | sort
|
||||||
echo '### Test --nonall -u'
|
echo '### Test --nonall -u'
|
||||||
parallel --nonall -S parallel@$SERVER2,$SERVER1 -vu 'sleep {#};hostname;sleep 3;hostname'
|
parallel --nonall -S parallel@$SERVER2,$SERVER1 -u 'hostname|grep -q nlv.pi.dk && sleep 2; hostname;sleep 4;hostname;'
|
||||||
echo '### Test read sshloginfile from STDIN'
|
echo '### Test read sshloginfile from STDIN'
|
||||||
echo nlv.pi.dk | parallel -S - --nonall hostname
|
echo nlv.pi.dk | parallel -S - --nonall hostname
|
||||||
echo nlv.pi.dk | parallel --sshloginfile - --nonall hostname
|
echo nlv.pi.dk | parallel --sshloginfile - --nonall hostname
|
||||||
|
|
|
@ -82,14 +82,14 @@ a_b c
|
||||||
d
|
d
|
||||||
e
|
e
|
||||||
### test too long args
|
### test too long args
|
||||||
Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
parallel: Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
xargs: argument line too long
|
xargs: argument line too long
|
||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
5 6
|
5 6
|
||||||
7 8
|
7 8
|
||||||
9 10
|
9 10
|
||||||
Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
parallel: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
5 6
|
5 6
|
||||||
|
@ -101,20 +101,20 @@ xargs: argument line too long
|
||||||
5 6
|
5 6
|
||||||
7 8
|
7 8
|
||||||
9 10
|
9 10
|
||||||
Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
parallel: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
### Test -x
|
### Test -x
|
||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
5 6
|
5 6
|
||||||
7 8
|
7 8
|
||||||
9 10
|
9 10
|
||||||
Command line too long (10 >= 10) at number 5: 12345...
|
parallel: Command line too long (10 >= 10) at number 5: 12345...
|
||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
5 6
|
5 6
|
||||||
7 8
|
7 8
|
||||||
9 10
|
9 10
|
||||||
Command line too long (10 >= 10) at number 5: 12345...
|
parallel: Command line too long (10 >= 10) at number 5: 12345...
|
||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
5 6
|
5 6
|
||||||
|
@ -287,8 +287,8 @@ line 2
|
||||||
### Test --no-run-if-empty and -r: This should give no output
|
### Test --no-run-if-empty and -r: This should give no output
|
||||||
### Test --help and -h: Help output (just check we get the same amount of lines)
|
### Test --help and -h: Help output (just check we get the same amount of lines)
|
||||||
Output from -h and --help
|
Output from -h and --help
|
||||||
6
|
22
|
||||||
6
|
22
|
||||||
### Test --version: Version output (just check we get the same amount of lines)
|
### Test --version: Version output (just check we get the same amount of lines)
|
||||||
12
|
12
|
||||||
### Test --verbose and -t
|
### Test --verbose and -t
|
||||||
|
|
|
@ -71,7 +71,7 @@ y
|
||||||
### -i -s26 -0 echo from \{\} to x{}y < items-0.xi
|
### -i -s26 -0 echo from \{\} to x{}y < items-0.xi
|
||||||
xargs: argument list too long
|
xargs: argument list too long
|
||||||
from one to xoney
|
from one to xoney
|
||||||
Command line too long (42 >= 26) at number 2:
|
parallel: Command line too long (42 >= 26) at number 2:
|
||||||
...
|
...
|
||||||
### -l -0 echo < ldata-0.xi
|
### -l -0 echo < ldata-0.xi
|
||||||
1 22 333 4444
|
1 22 333 4444
|
||||||
|
@ -808,7 +808,7 @@ with 'single quotes' as well.
|
||||||
/src/gnu/autoconf-1.11/texinfo.tex
|
/src/gnu/autoconf-1.11/texinfo.tex
|
||||||
### -s6 echo < files.xi
|
### -s6 echo < files.xi
|
||||||
xargs: argument line too long
|
xargs: argument line too long
|
||||||
Command line too long (27 >= 6) at number 1: /src/gnu/autoconf-1.11...
|
parallel: Command line too long (27 >= 6) at number 1: /src/gnu/autoconf-1.11...
|
||||||
### -iARG -s86 echo ARG is xARGx < files.xi
|
### -iARG -s86 echo ARG is xARGx < files.xi
|
||||||
/src/gnu/autoconf-1.11 is x/src/gnu/autoconf-1.11x
|
/src/gnu/autoconf-1.11 is x/src/gnu/autoconf-1.11x
|
||||||
/src/gnu/autoconf-1.11/README is x/src/gnu/autoconf-1.11/READMEx
|
/src/gnu/autoconf-1.11/README is x/src/gnu/autoconf-1.11/READMEx
|
||||||
|
@ -974,7 +974,7 @@ from: can't read /var/mail/{}
|
||||||
### -i -s26 echo from \{\} to x{}y < items.xi
|
### -i -s26 echo from \{\} to x{}y < items.xi
|
||||||
xargs: argument list too long
|
xargs: argument list too long
|
||||||
from dumb to xdumby
|
from dumb to xdumby
|
||||||
Command line too long (36 >= 26) at number 1:
...
|
parallel: Command line too long (36 >= 26) at number 1:
...
|
||||||
### -i__ echo FIRST __ IS OK < quotes.xi
|
### -i__ echo FIRST __ IS OK < quotes.xi
|
||||||
FIRST this is IS OK
|
FIRST this is IS OK
|
||||||
FIRST quoted stuff IS OK
|
FIRST quoted stuff IS OK
|
||||||
|
|
|
@ -1,10 +1,26 @@
|
||||||
### Test of -j filename
|
### Test of -j filename
|
||||||
Usage:
|
Usage:
|
||||||
parallel [options] [command [arguments]] < list_of_arguments
|
parallel [options] [command [arguments]] < list_of_arguments
|
||||||
parallel [options] [command [arguments]] ::: arguments
|
parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))...
|
||||||
parallel [options] [command [arguments]] :::: argfile(s)
|
cat ... | parallel --pipe [options] [command [arguments]]
|
||||||
|
|
||||||
See 'man parallel' for the options
|
-j n Run n jobs in parallel
|
||||||
|
-k Keep same order
|
||||||
|
-X Multiple arguments with context replace
|
||||||
|
--colsep regexp Split input on regexp for positional replacements
|
||||||
|
{} {.} {/} {/.} {#} Replacement strings
|
||||||
|
{3} {3.} {3/} {3/.} Positional replacement strings
|
||||||
|
|
||||||
|
-S sshlogin - e.g. foo@server.example.com
|
||||||
|
--trc {}.bar Shorthand for --transfer --return {}.bar --cleanup
|
||||||
|
--onall Run the given command with argument on all sshlogins
|
||||||
|
--nonall Run the given command with no arguments on all sshlogins
|
||||||
|
|
||||||
|
--pipe Split stdin (standard input) to multiple jobs.
|
||||||
|
--recend Record end separator for --pipe.
|
||||||
|
--recstart Record start separator for --pipe.
|
||||||
|
|
||||||
|
See 'man parallel' for details
|
||||||
Parsing of --jobs/-j/--max-procs/-P failed
|
Parsing of --jobs/-j/--max-procs/-P failed
|
||||||
### Test of -j filename
|
### Test of -j filename
|
||||||
sleep 0.7
|
sleep 0.7
|
||||||
|
|
|
@ -6,6 +6,14 @@ b.c
|
||||||
b
|
b
|
||||||
b
|
b
|
||||||
b
|
b
|
||||||
|
### Test --bnr
|
||||||
|
b.c b.c b.c b b b
|
||||||
|
b.c
|
||||||
|
b.c
|
||||||
|
b.c
|
||||||
|
b
|
||||||
|
b
|
||||||
|
b
|
||||||
### Test --basenameextensionreplace
|
### Test --basenameextensionreplace
|
||||||
b b b b b b
|
b b b b b b
|
||||||
b
|
b
|
||||||
|
@ -14,6 +22,14 @@ b
|
||||||
b
|
b
|
||||||
b
|
b
|
||||||
b
|
b
|
||||||
|
### Test --bner
|
||||||
|
b b b b b b
|
||||||
|
b
|
||||||
|
b
|
||||||
|
b
|
||||||
|
b
|
||||||
|
b
|
||||||
|
b
|
||||||
### Test {/}
|
### Test {/}
|
||||||
b.c b.c b.c b b b
|
b.c b.c b.c b b b
|
||||||
### Test {/.}
|
### Test {/.}
|
||||||
|
|
|
@ -46,3 +46,9 @@
|
||||||
### Test -N is not broken by distribution - two lines
|
### Test -N is not broken by distribution - two lines
|
||||||
1 2 3 4 5 6 7 8 9 10
|
1 2 3 4 5 6 7 8 9 10
|
||||||
11 12 13 14 15 16 17 18 19
|
11 12 13 14 15 16 17 18 19
|
||||||
|
### Test -N context replace
|
||||||
|
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
|
||||||
|
a11b a12b a13b a14b a15b a16b a17b a18b a19b
|
||||||
|
### Test -L context replace
|
||||||
|
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
|
||||||
|
a11b a12b a13b a14b a15b a16b a17b a18b a19b
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
1 1 130001
|
1 1 130001
|
||||||
1 1 130001
|
1 1 130001
|
||||||
1 1 130001
|
1 1 130001
|
||||||
Command line too long (260009 >= 131071) at number 9: 10...
|
parallel: Command line too long (260009 >= 131071) at number 9: 10...
|
||||||
|
|
|
@ -1,22 +1,16 @@
|
||||||
### Test --onall
|
### Test --onall
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
|
||||||
### Test | --onall
|
### Test | --onall
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
|
@ -59,8 +53,6 @@
|
||||||
nlv.pi.dk
|
nlv.pi.dk
|
||||||
vh2.pi.dk
|
vh2.pi.dk
|
||||||
### Test --nonall -u
|
### Test --nonall -u
|
||||||
ssh parallel-server3 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; sleep\ 1\;hostname\;sleep\ 3\;hostname;
|
|
||||||
ssh parallel@parallel-server2 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; sleep\ 1\;hostname\;sleep\ 3\;hostname;
|
|
||||||
vh2.pi.dk
|
vh2.pi.dk
|
||||||
nlv.pi.dk
|
nlv.pi.dk
|
||||||
vh2.pi.dk
|
vh2.pi.dk
|
||||||
|
|
Loading…
Reference in a new issue