mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 22:17:54 +00:00
Implemented {#.} and unittest.
This commit is contained in:
parent
248fa1c940
commit
cf05dae1b1
50
src/parallel
50
src/parallel
|
@ -80,7 +80,7 @@ B<{.}> can be used the same places as B<{}>. The replacement string
|
||||||
B<{.}> can be changed with B<-U>.
|
B<{.}> can be changed with B<-U>.
|
||||||
|
|
||||||
|
|
||||||
=item B<{>I<n>B<}>
|
=item B<{>I<n>B<}> (beta testing)
|
||||||
|
|
||||||
Argument from argument file I<n> or the I<n>'th argument. See B<-a>
|
Argument from argument file I<n> or the I<n>'th argument. See B<-a>
|
||||||
and B<-N>.
|
and B<-N>.
|
||||||
|
@ -88,6 +88,14 @@ and B<-N>.
|
||||||
B<{>I<n>B<}> can be used the same places as B<{}>.
|
B<{>I<n>B<}> can be used the same places as B<{}>.
|
||||||
|
|
||||||
|
|
||||||
|
=item B<{>I<n>.B<}> (beta testing)
|
||||||
|
|
||||||
|
Argument from argument file I<n> or the I<n>'th argument without
|
||||||
|
extension. Similar to B<{.}>. See B<-a> and B<-N>.
|
||||||
|
|
||||||
|
B<{>I<n>.B<}> can be used the same places as B<{.}>.
|
||||||
|
|
||||||
|
|
||||||
=item B<:::> I<arguments> (beta testing)
|
=item B<:::> I<arguments> (beta testing)
|
||||||
|
|
||||||
Use arguments from the command line as input instead of from stdin
|
Use arguments from the command line as input instead of from stdin
|
||||||
|
@ -111,9 +119,9 @@ stdin (standard input) will be passed to the first process run.
|
||||||
If B<--arg-file> is set arguments from that file will be appended.
|
If B<--arg-file> is set arguments from that file will be appended.
|
||||||
|
|
||||||
|
|
||||||
=item B<::::> I<argfiles> (beta test)
|
=item B<::::> I<argfiles> (beta testing)
|
||||||
|
|
||||||
Alternative version of B<-a> I<argfile1> B<-a> I<argfile2> ...
|
Another way to write B<-a> I<argfile1> B<-a> I<argfile2> ...
|
||||||
|
|
||||||
See B<-a>.
|
See B<-a>.
|
||||||
|
|
||||||
|
@ -419,7 +427,7 @@ Implies B<-X> unless B<-m> is set.
|
||||||
|
|
||||||
Use at most I<max-args> arguments per command line. Like B<-n> but
|
Use at most I<max-args> arguments per command line. Like B<-n> but
|
||||||
also makes replacement strings B<{1}> .. B<{>I<max-args>B<}> that
|
also makes replacement strings B<{1}> .. B<{>I<max-args>B<}> that
|
||||||
represents argument 1 .. I<max-args>. If too few args the {I<n>} will
|
represents argument 1 .. I<max-args>. If too few args the B<{>I<n>B<}> will
|
||||||
be empty.
|
be empty.
|
||||||
|
|
||||||
This will set the owner of the homedir to the user:
|
This will set the owner of the homedir to the user:
|
||||||
|
@ -2127,19 +2135,31 @@ sub generate_command_line {
|
||||||
}
|
}
|
||||||
$is_substituted = 1;
|
$is_substituted = 1;
|
||||||
}
|
}
|
||||||
if(defined $job_line and $::opt_N and $job_line =~/\{\d+\}/o) {
|
if(defined $job_line and $::opt_N) {
|
||||||
# substitute {#} with args
|
if($job_line =~/\{\d+\}/o) {
|
||||||
my $argno=1;
|
# substitute {#} with args
|
||||||
for my $argno (1..$::opt_N) {
|
for my $argno (1..$::opt_N) {
|
||||||
my $arg = $quoted_args->[$argno-1];
|
my $arg = $quoted_args->[$argno-1];
|
||||||
if(defined $arg) {
|
if(defined $arg) {
|
||||||
$job_line =~ s/\{$argno\}/$arg/g;
|
$job_line =~ s/\{$argno\}/$arg/g;
|
||||||
} else {
|
} else {
|
||||||
$job_line =~ s/\{$argno\}//g;
|
$job_line =~ s/\{$argno\}//g;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$argno++;
|
$is_substituted = 1;
|
||||||
|
}
|
||||||
|
if($job_line =~/\{\d+\.\}/o) {
|
||||||
|
# substitute {#.} with args
|
||||||
|
for my $argno (1..$::opt_N) {
|
||||||
|
my $arg = no_extension($quoted_args->[$argno-1]);
|
||||||
|
if(defined $arg) {
|
||||||
|
$job_line =~ s/\{$argno\.\}/$arg/g;
|
||||||
|
} else {
|
||||||
|
$job_line =~ s/\{$argno\.\}//g;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$is_substituted = 1;
|
||||||
}
|
}
|
||||||
$is_substituted = 1;
|
|
||||||
}
|
}
|
||||||
if (not $is_substituted) {
|
if (not $is_substituted) {
|
||||||
# append args
|
# append args
|
||||||
|
|
|
@ -42,3 +42,6 @@ parallel -kv echo {2} {1} :::: <(echo a) <(echo b) <(echo c)
|
||||||
echo '### Multiple -a: nonexistent'
|
echo '### Multiple -a: nonexistent'
|
||||||
stdout parallel -kv echo {2} {1} :::: nonexist nonexist2
|
stdout parallel -kv echo {2} {1} :::: nonexist nonexist2
|
||||||
stdout parallel -kv -a nonexist -a nonexist2 echo {2} {1}
|
stdout parallel -kv -a nonexist -a nonexist2 echo {2} {1}
|
||||||
|
|
||||||
|
echo '### Test {#.}'
|
||||||
|
parallel -kv -a <(echo a-noext) -a <(echo b-withext.extension) -a <(echo c-ext.gif) echo {3.} {2.} {1.}
|
||||||
|
|
Loading…
Reference in a new issue