parallel: \-quoting replaced with '-quoting.

This commit is contained in:
Ole Tange 2018-07-22 08:58:32 +02:00
parent 628c0029cc
commit 75007fcbbf
48 changed files with 2558 additions and 882 deletions

View file

@ -119,4 +119,7 @@ monitorman:
# If man page changed: open new pdfman
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
testurls:
grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(&gt|\{).*//;s/\\//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?'
EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt

View file

@ -867,6 +867,9 @@ monitorman:
# If man page changed: open new pdfman
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
testurls:
grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(&gt|\{).*//;s/\\//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?'
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

12
README
View file

@ -44,9 +44,9 @@ document.
Full installation of GNU Parallel is as simple as:
wget https://ftpmirror.gnu.org/parallel/parallel-20180622.tar.bz2
bzip2 -dc parallel-20180622.tar.bz2 | tar xvf -
cd parallel-20180622
wget https://ftpmirror.gnu.org/parallel/parallel-20180722.tar.bz2
bzip2 -dc parallel-20180722.tar.bz2 | tar xvf -
cd parallel-20180722
./configure && make && sudo make install
@ -55,9 +55,9 @@ Full installation of GNU Parallel is as simple as:
If you are not root you can add ~/bin to your path and install in
~/bin and ~/share:
wget https://ftpmirror.gnu.org/parallel/parallel-20180622.tar.bz2
bzip2 -dc parallel-20180622.tar.bz2 | tar xvf -
cd parallel-20180622
wget https://ftpmirror.gnu.org/parallel/parallel-20180722.tar.bz2
bzip2 -dc parallel-20180722.tar.bz2 | tar xvf -
cd parallel-20180722
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20180622], [bug-parallel@gnu.org])
AC_INIT([parallel], [20180722], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -141,6 +141,7 @@ git push
git push origin $TAG
git push origin $YYYYMMDD
== Update documentation ==
Update version number + 1
@ -154,6 +155,12 @@ Unmodified beta since last version => production
Unmodified alpha since last version => beta
Modified => alpha
== Check URLs ==
make testurls
== Update Savannah ==
file:///home/tange/privat/parallel/doc/release_new_version
@ -199,10 +206,11 @@ to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20180722 ('?') released <<[stable]>>
Subject: GNU Parallel 20180722 ('Crimson Hexagon') released [alpha] <<[stable]>>
GNU Parallel 20180722 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20180722 ('Crimson Hexagon') [alpha] <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
This release has signficant changes and is considered alpha quality.
<<No new functionality was introduced so this is a good candidate for a stable release.>>
Quote of the month:
@ -214,6 +222,8 @@ Quote of the month:
New in this release:
* The quoting engine has been changed. Instead of using \-quoting GNU Parallel now uses '-quoting in bash/ash/dash/ksh. This should improve compatibility with different locales. This is a big change causing this release to be alpha quality.
* The CPU calculation has changed. By default GNU Parallel uses the number of CPU threads as the number of CPUs. This can be change to the number of CPU cores or number of CPU sockets with --use-cores-instead-of-threads or --use-sockets-instead-of-threads.
* The detected number of sockets, cores, and threads can be shown with --number-of-sockets, --number-of-cores, and --number-of-threads.
@ -222,7 +232,9 @@ New in this release:
* GNU Parallel is distributed as part of Snippy https://github.com/tseemann/snippy
https://esgeeks.com/gnu-parallel-ejecutar-comandos-simultaneo-linux/
* GNU Parallel: Ejecutar comandos simultáneamente en Linux https://esgeeks.com/gnu-parallel-ejecutar-comandos-simultaneo-linux/
* Parallel download genomic data with GNU-Parallel https://digibio.blogspot.com/search/label/GNU-Parallel
<<Citation not OK: BAMClipper: removing primers from alignments to minimize false-negative mutations in amplicon next-generation sequencing https://www.nature.com/articles/s41598-017-01703-6>>

View file

@ -349,8 +349,8 @@ _parset_main() {
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
fi

View file

@ -340,8 +340,8 @@ _parset_main() {
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
fi

View file

@ -24,7 +24,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20180622;
$Global::version = 20180722;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -262,7 +262,7 @@ sub pipepart_setup {
@Global::cat_prepends = map { pipe_part_files($_) } @opt::a;
# Unget the empty arg as many times as there are parts
$Global::JobQueue->{'commandlinequeue'}{'arg_queue'}->unget(
map { [Arg->new("\0")] } @Global::cat_prepends
map { [Arg->new("\0noarg")] } @Global::cat_prepends
);
}
}
@ -1317,10 +1317,10 @@ sub parse_options {
# Append a dummy empty argument if there are no arguments
# on the command line to avoid reading from STDIN.
# arg_sep = random 50 char
# \0 => nothing (not the empty string)
# \0noarg => nothing (not the empty string)
$Global::arg_sep = join "",
map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..50);
push @ARGV, $Global::arg_sep, "\0";
push @ARGV, $Global::arg_sep, "\0noarg";
}
if(defined $opt::tee) {
if(not defined $opt::jobs) {
@ -1462,6 +1462,9 @@ sub parse_options {
}
# Map \001 to \n to make it easer to quote \n in $PARALLEL_ENV
$penv =~ s/\001/\n/g;
if($penv =~ /\0/) {
::warning('\0 (NUL) in environment is not supported');
}
$Global::parallel_env = $penv;
}
@ -1538,7 +1541,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20180622;
$Global::version = 20180722;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -1609,8 +1612,6 @@ sub init_globals {
$Global::trim = 'n';
$Global::max_jobs_running = 0;
$Global::job_already_run = '';
# LC_ALL workaround for multibyte chars containing special shell chars
$ENV{'LC_ALL'} = 'C';
$ENV{'TMPDIR'} ||= "/tmp";
if(not $ENV{HOME}) {
# $ENV{HOME} is sometimes not set if called from PHP
@ -1789,7 +1790,7 @@ sub parse_semaphore {
@opt::a = ("/dev/null");
# Append a dummy empty argument
# \0 => nothing (not the empty string)
push(@Global::unget_argv, [Arg->new("\0")]);
push(@Global::unget_argv, [Arg->new("\0noarg")]);
$Semaphore::timeout = $opt::semaphoretimeout || 0;
if(defined $opt::semaphorename) {
$Semaphore::name = $opt::semaphorename;
@ -2266,8 +2267,8 @@ sub shell_quote {
# Output:
# @shell_quoted_strings = string quoted with \ as needed by the shell
return wantarray ?
(map { shell_quote_scalar($_) } @_)
: (join" ",map { shell_quote_scalar($_) } @_);
(map { Q($_) } @_)
: (join" ",map { Q($_) } @_);
}
sub shell_quote_scalar_rc {
@ -2310,27 +2311,20 @@ sub shell_quote_scalar_csh {
}
sub shell_quote_scalar_default {
# Quote for other shells
my $a = $_[0];
if(defined $a) {
# zsh wants '=' quoted
# Solaris sh wants ^ quoted.
# $a =~ s/([\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\^\*\>\<\~\|\; \"\!\$\&\'\202-\377])/\\$1/g;
# This is 1% faster than the above
if(($a =~ s/[\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\^\*\<\=\>\~\|\; \"\!\$\&\'\202-\377]/\\$&/go)
+
# quote newline as '\n'
($a =~ s/[\n]/'\n'/go)) {
# A string was replaced
# No need to test for "" or \0
} elsif($a eq "") {
$a = "''";
} elsif($a eq "\0") {
$a = "";
# Quote for other shells (Bourne compatibles)
my ($par) = $_[0];
if($par =~ /[^-_.+a-z0-9\/]/i) {
$par =~ s/'/'"'"'/g; # "-quote single quotes
$par = "'$par'"; # '-quote entire string
$par =~ s/^''|''$//g; # Remove unneeded '' at ends
return $par;
} elsif ($par eq "") {
return "''";
} else {
# No quoting needed
return $par;
}
}
return $a;
}
sub shell_quote_scalar {
# Quote the string so the shell will not expand any special chars
@ -2356,6 +2350,12 @@ sub shell_quote_scalar {
return shell_quote_scalar(@_);
}
sub Q {
# Q alias for ::shell_quote_scalar
*Q = \&::shell_quote_scalar;
return Q(@_);
}
sub shell_quote_file {
# Quote the string so shell will not expand any special chars
# and prepend ./ if needed
@ -2363,7 +2363,7 @@ sub shell_quote_file {
# $filename = filename to be shell quoted
# Returns:
# $quoted_filename = filename quoted with \ and ./ if needed
my $a = shell_quote_scalar(shift);
my $a = shift;
if(defined $a) {
if($a =~ m:^/: or $a =~ m:^\./:) {
# /abs/path or ./rel/path => skip
@ -2372,7 +2372,7 @@ sub shell_quote_file {
$a = "./".$a;
}
}
return $a;
return ::Q($a);
}
sub shell_words {
@ -2397,6 +2397,12 @@ sub perl_quote_scalar {
return $a;
}
sub pQ {
# pQ alias for ::perl_quote_scalar
*pQ = \&::perl_quote_scalar;
return pQ(@_);
}
sub unquote_printf {
# Convert \t \n \r \000 \0
$_ = shift;
@ -2910,7 +2916,7 @@ sub drain_job_queue {
# Replace --sql/--sqlandworker with --sqlworker
my @ARGV = map { s/^--sql(andworker)?$/--sqlworker/; $_ } @Global::options_in_argv;
# exec the --sqlworker
exec($0,::shell_quote(@ARGV),@command);
exec($0,@ARGV,@command);
}
}
}
@ -3629,7 +3635,7 @@ sub parse_host_filtering {
my (%nsockets, %ncores, %nthreads, %time_to_login, %maxlen, %echo,
@down_hosts);
for (@_) {
::debug("init",$_);
::debug("init","Read: ",$_);
chomp;
my @col = split /\t/, $_;
if($col[0] =~ /^parallel: Warning:/) {
@ -3645,7 +3651,7 @@ sub parse_host_filtering {
next;
}
# Get server from: eval true server\;
$col[8] =~ /eval true..([^;]+).;/ or
$col[8] =~ /eval .?true.?\s([^\;]+);/ or
::die_bug("col8 does not contain host: $col[8]");
my $host = $1;
$host =~ tr/\\//d;
@ -3776,12 +3782,13 @@ sub parallelized_host_filtering {
}
close $in;
for(<$host_fh>) {
if(/\'$/) {
# if last char = ' then append next line
# This may be due to quoting of \n in environment var
$prepend .= $_;
next;
}
# TODO incompatible with '-quoting. Needs to be fixed differently
#if(/\'$/) {
# # if last char = ' then append next line
# # This may be due to quoting of \n in environment var
# $prepend .= $_;
# next;
#}
$_ = $prepend . $_;
$prepend = "";
push @out, $_;
@ -8276,7 +8283,7 @@ sub sshlogin_wrap {
$wd =~ s:^([^/]):$ENV{'HOME'}/$1:;
}
::mkdir_or_die($wd);
$command = "cd ".::shell_quote_scalar($wd)." || exit 255; ".$command;
$command = "cd ".::Q($wd)." || exit 255; ".$command;
}
if(@opt::env) {
# Prepend with environment setter, which sets functions in zsh
@ -8302,7 +8309,7 @@ sub sshlogin_wrap {
my $pwd = "";
if($opt::workdir) {
# Create remote workdir if needed. Then cd to it.
my $wd = $self->workdir();
my $wd = ::pQ($self->workdir());
$pwd = qq{system("mkdir","-p","--","$wd"); chdir "$wd" ||}.
qq{print(STDERR "parallel: Cannot chdir to $wd\\n") && exit 255;};
}
@ -8560,7 +8567,7 @@ sub workdir {
} else {
$workdir = ".";
}
$self->{'workdir'} = ::shell_quote_scalar($workdir);
$self->{'workdir'} = $workdir;
}
return $self->{'workdir'};
}
@ -9974,55 +9981,6 @@ sub replaced {
return $self->{'replaced'};
}
{
my @target;
my $context_replace;
my $perl_expressions_as_re;
my @arg;
my %words_with_rpl_strings;
sub fish_out_words_with_rpl_strings {
if(not $words_with_rpl_strings{$context_replace,@target}) {
my %word;
for (@target) {
my $tt = $_;
::debug("replace", "Target: $tt");
# Command line template:
# a{1}b{}c{}d
# becomes:
# a{=1 $_=$_ =}b{= $_=$_ =}c{= $_=$_ =}d
# becomes:
# a\257<1 $_=$_ \257>b\257< $_=$_ \257>c\257< $_=$_ \257>d
# Input A B C (no context) becomes:
# A B C => aAbA B CcA B Cd
# Input A B C (context -X) becomes:
# A B C => aAbAcAd aAbBcBd aAbCcCd
if($context_replace) {
while($tt =~ s/([^\s\257]* # before {=
(?:
\257< # {=
(?: [^\257]*|[\257][^<>] )* # The perl expression
\257> # =}
[^\s\257]* # after =}
)+)/ /xs) {
# $1 = pre \257< perlexpr \257> post
$word{"$1"} ||= 1;
}
} else {
while($tt =~ s/( \257<(?: # {=
[^\257]*|[\257][^<>] )* # not \257< or \257>
\257> ) # =}
//xs) {
# $1 = \257< perlexpr \257>
$word{$1} ||= 1;
}
}
}
@{$words_with_rpl_strings{$context_replace,@target}} = keys %word
}
return @{$words_with_rpl_strings{$context_replace,@target}};
}
sub replace_placeholders {
# Replace foo{}bar with fooargbar
# Uses:
@ -10038,14 +9996,37 @@ sub replaced {
my $quote = shift;
my $quote_arg = shift;
my %replace;
# -X = context replace (fish_out_words_with_rpl_strings)
$context_replace = $self->{'context_replace'};
@target = @$targetref;
::debug("replace", "Replace @target\n");
if(not @target) {
# @target is empty: Return empty array
return @target;
# Token description:
# \0spc = unquoted space
# \0end = last token element
# \0ign = dummy token to be ignored
# \257<...\257> = replacement expression
# " " = quoted space, that splits -X group
# text = normal text - possibly part of -X group
my $spacer = 0;
my @tokens = grep { length $_ > 0 } map {
if(/^\257<|^ $/) {
# \257<...\257> or space
$_
} else {
# Split each space into a token
split /(?= )|(?<= )/
}
}
# Split \257< ... \257> into own token
map { split /(?=\257<)|(?<=\257>)/ }
# Insert "\0spc" between every element
# This space should never be quoted
map { $spacer++ ? ("\0spc",$_) : $_ }
map { $_ eq "" ? "\0empty" : $_ }
@$targetref;
if(not @tokens) {
# @tokens is empty: Return empty array
return @tokens;
}
::debug("replace", "Tokens ".join":",@tokens,"\n");
# Make it possible to use $arg[2] in {= =}
*Arg::arg = $self->{'arg_list_flat_orig'};
# Flat list:
@ -10061,21 +10042,27 @@ sub replaced {
# $self is actually a CommandLine-object,
# but it looks nice to be able to say {= $job->slot() =}
my $job = $self;
$perl_expressions_as_re =
join("|", map {s/^-?\d+//; "\Q$_\E"} keys %{$self->{'replacecount'}});
# Fish out the words that have replacement strings in them
for my $word (fish_out_words_with_rpl_strings()) {
# word = AB \257< perlexpr \257> CD \257< perlexpr \257> EF
::debug("replace", "Replacing in $word\n");
my $normal_replace;
# for each arg:
# replace replacement strings with replacement in the word value
# push to replace word value
# @replaced = tokens with \257< \257> replaced
my @replaced;
if($self->{'context_replace'}) {
my @ctxgroup;
for my $t (@tokens,"\0end") {
# \0end = last token was end of tokens.
if($t eq " " or $t eq "\0end" or $t eq "\0spc") {
# Context group complete: Replace in it
if(grep { /^\257</ } @ctxgroup) {
# Context group contains a replacement string:
# Copy once per arg
my $space = "\0ign";
for my $arg (@$argref) {
my $val = $word;
# Replace {= perl expr =} with value for each arg
$val =~ s{\257<(-?\d+)?($perl_expressions_as_re)\257>}
my $normal_replace;
# Push output
# Put unquoted space before each context group
# except the first
CORE::push @replaced, $space, map {
$a = $_;
$a =~
s{\257<(-?\d+)?(.*)\257>}
{
if($1) {
# Positional replace
@ -10089,48 +10076,95 @@ sub replaced {
$normal_replace ||= 1;
($arg ? $arg->replace($2,$quote_arg,$self) : "");
}
}gxe;
if($quote) {
CORE::push(@{$replace{::shell_quote_scalar($word)}},
::shell_quote_scalar($val));
} else {
CORE::push(@{$replace{$word}}, $val);
}
# No normal replacements => only run once
}sgxe;
$a
} @ctxgroup;
$normal_replace or last;
$space = "\0spc";
}
} else {
# Context group has no a replacement string: Copy it once
CORE::push @replaced, @ctxgroup;
}
# New context group
@ctxgroup=();
}
if($t eq "\0spc") {
CORE::push @replaced,$t;
} else {
CORE::push @ctxgroup,$t;
}
}
} else {
# @group = @token
# Replace in group
# Push output
# repquote = no if {} first on line, no if $quote, yes otherwise
for my $t (@tokens) {
if($t =~ /^\257</) {
my $space = "\0ign";
for my $arg (@$argref) {
my $normal_replace;
$a = $t;
$a =~
s{\257<(-?\d+)?(.*)\257>}
{
if($1) {
# Positional replace
# Find the relevant arg and replace it
($argref->[$1 > 0 ? $1-1 : $n+$1] ? # If defined: replace
$argref->[$1 > 0 ? $1-1 : $n+$1]->
replace($2,$quote_arg,$self)
: "");
} else {
# Normal replace
$normal_replace ||= 1;
($arg ? $arg->replace($2,$quote_arg,$self) : "");
}
}sgxe;
CORE::push @replaced, $space, $a;
$normal_replace or last;
$space = "\0spc";
}
} else {
# No replacement
CORE::push @replaced, $t;
}
}
}
*Arg::arg = [];
if($quote) {
@target = ::shell_quote(@target);
}
if(%replace) {
# Substitute the replace strings with the replacement values
# Must be sorted by length if a short word is a substring of a long word
my $regexp = join('|', map { my $s = $_; $s =~ s/(\W)/\\$1/g; $s }
sort { length $b <=> length $a } keys %replace);
for(@target) {
s/($regexp)/join(" ",@{$replace{$1}})/ge;
}
}
::debug("replace","Replaced: ".join":",@replaced,"\n");
if($Global::escape_string_present) {
# Command line contains \257: Unescape it \257\256 => \257
# If a replacement resulted in \257\256
# it will have been escaped into \\\257\\\\256
# and will not be matched below
for(@target) {
for(@replaced) {
s/\257\256/\257/g;
}
if($opt::q) {
# \257 will be quoted too much
for(@target) {
s/\\\257\\\256/\\\257/g;
}
# Put tokens into groups that may be quoted.
my @quotegroup;
my @quoted;
for (map { $_ eq "\0empty" ? "" : $_ }
grep { $_ ne "\0ign" }
grep { $_ !~ /\0noarg/ }
@replaced, "\0end") {
if($_ eq "\0spc" or $_ eq "\0end") {
# \0spc splits quotable groups
if($quote) {
CORE::push @quoted, ::shell_quote_scalar(join"",@quotegroup);
} else {
CORE::push @quoted, join"",@quotegroup;
}
@quotegroup = ();
} else {
CORE::push @quotegroup, $_;
}
}
}
::debug("replace", "Return @target\n");
return wantarray ? @target : "@target";
}
::debug("replace","Quoted: ".join":",@quoted,"\n");
return wantarray ? @quoted : "@quoted";
}
sub skip {
@ -10672,17 +10706,23 @@ sub get {
my $ret = $self->{'arg_sub_queue'}->get();
if($ret) {
if(grep { index($_->orig(),"\0") > 0 } @$ret) {
# Allow for \0 in position 0 because GNU Parallel uses "\0"
# Allow for \0 in position 0 because GNU Parallel uses "\0noarg"
# to mean no-string
::warning("a NUL character occurred in the input.",
"It cannot be passed through in the argument list.",
::warning("A NUL character in the input was replaced with \\0.",
"NUL cannot be passed through in the argument list.",
"Did you mean to use the --null option?");
for(grep { index($_->orig(),"\0") > 0 } @$ret) {
# Replace \0 with \\0
my $a = $_->orig();
$a =~ s/\0/\\0/g;
$_->set_orig($a);
}
}
if(defined $Global::max_number_of_args
and $Global::max_number_of_args == 0) {
::debug("run", "Read 1 but return 0 args\n");
# \0 => nothing (not the empty string)
map { $_->set_orig("\0"); } @$ret;
# \0noarg => nothing (not the empty string)
map { $_->set_orig("\0noarg"); } @$ret;
}
# Flush cached computed replacements in Arg-objects
# To fix: parallel --bar echo {%} ::: a b c ::: d e f
@ -11471,7 +11511,7 @@ sub parse_dburl {
my %options = ();
# sql:mysql://[[user][:password]@][host][:port]/[database[/table][?query]]
if($url=~m!(?:sql:)? # You can prefix with 'sql:'
if($url=~m!^(?:sql:)? # You can prefix with 'sql:'
((?:oracle|ora|mysql|pg|postgres|postgresql)(?:s|ssl|)|
(?:sqlite|sqlite2|sqlite3|csv)):// # Databasedriver ($1)
(?:
@ -11497,7 +11537,7 @@ sub parse_dburl {
\?
(.*)? # Query ($8)
)?
!ix) {
$!ix) {
$options{databasedriver} = ::undef_if_empty(lc(uri_unescape($1)));
$options{user} = ::undef_if_empty(uri_unescape($2));
$options{password} = ::undef_if_empty(uri_unescape($3));

View file

@ -409,7 +409,7 @@ there is no data.
=item --tmux
<<TODO Fixup>>
<<TODO Fixup with '-quoting>>
mkfifo /tmp/tmx3cMEV &&
sh -c 'tmux -S /tmp/tmsaKpv1 new-session -s p334310 -d "sleep .2" >/dev/null 2>&1';
tmux -S /tmp/tmsaKpv1 new-window -t p334310 -n wc\ 10 \(wc\ 10\)\;\ perl\ -e\ \'while\(\$t++\<3\)\{\ print\ \$ARGV\[0\],\"\\n\"\ \}\'\ \$\?h/\$status\ \>\>\ /tmp/tmx3cMEV\&echo\ wc\\\ 10\;\ echo\ \Job\ finished\ at:\ \`date\`\;sleep\ 10;
@ -792,16 +792,11 @@ you do not see the whole picture.
=head2 Quoting
Quoting depends on the shell. For most shells \ is used for all
special chars and ' is used for newline. Whether a char is special
depends on the shell and the context. Luckily quoting a bit too many
chars does not break things.
Quoting depends on the shell. For most shells '-quoting is used for
strings containing special characters.
It is fast, but has the distinct disadvantage that if a string needs
to be quoted multiple times, the \'s double every time - increasing
the string length exponentially.
For B<tcsh>/B<csh> newline is quoted as \ followed by newline.
For B<tcsh>/B<csh> newline is quoted as \ followed by newline. Other
special characters are also \-quoted.
For B<rc> everything is quoted using '.

View file

@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20180622;
$Global::version = 20180722;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -32,6 +32,12 @@ local: testlocal
testlocal: ../src/parallel tests-to-run/*local* wanted-results/*local* prereqlocal installparallel
time bash Start.sh local mem
short: testlocalshort
true
testlocalshort: ../src/parallel tests-to-run/*local* wanted-results/*local* prereqlocal installparallel
time bash Start.sh local mem'|'100s
prereqlocal: installparallel
tcsh -c echo tcsh installed || (echo tcsh is required for testsuite; /bin/false)
seq 1 2 >/dev/null || (echo seq is required for testsuite; /bin/false)

View file

@ -827,6 +827,7 @@ par_pipe_recend() {
par_perlexpr_with_newline() {
echo 'Perl expression spanning 2 lines'
mkdir -p tmp
cd tmp
touch "Dad's \"famous\" 1' pizza"
# Important with newline in perl expression:

View file

@ -16,7 +16,7 @@ par_exit_code() {
# Runs command in given shell via Perl's open3
shell="$1"
prg="$2"
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c","'"$prg"'"); wait; print $?>>8,"\n"'
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c",'"$prg"'); wait; print $?>>8,"\n"'
}
export -f in_shell_run_command

View file

@ -314,6 +314,31 @@ par_retries_all_fail() {
parallel -k -j0 --retries 2 --timeout 0.1 'echo {}; sleep {}; false' 2>/dev/null
}
par_sockets_cores_threads() {
echo '### Test --number-of-sockets/cores/threads'
parallel --number-of-sockets
parallel --number-of-cores
parallel --number-of-threads
parallel --number-of-cpus
echo '### Test --use-sockets-instead-of-threads'
(seq 1 4 |
stdout parallel --use-sockets-instead-of-threads -j100% sleep) &&
echo sockets done &
(seq 1 4 | stdout parallel -j100% sleep) && echo threads done &
wait
echo 'Threads should complete first on machines with less than 8 sockets'
}
par_long_line_remote() {
echo '### Deal with long command lines on remote servers'
perl -e "print(((\"'\"x5000).\"\\n\")x6)" |
parallel -j1 -S lo -N 10000 echo {} |wc
perl -e 'print((("\$"x5000)."\n")x50)' |
parallel -j1 -S lo -N 10000 echo {} |wc
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -8,113 +8,114 @@ export PG=pg://`whoami`:`whoami`@lo/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`
export DEBUG=false
rm /run/shm/parallel.db
p_showsqlresult() {
SERVERURL=$1
TABLE=$2
sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
}
p_wrapper() {
INNER=$1
SERVERURL=$(eval echo $2)
TABLE=TBL$RANDOM
DBURL=$SERVERURL/$TABLE
T1=$(tempfile)
T2=$(tempfile)
eval "$INNER"
echo Exit=$?
wait
echo Exit=$?
$DEBUG && sort -u $T1 $T2;
rm $T1 $T2
p_showsqlresult $SERVERURL $TABLE
$DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
}
p_template() {
(sleep 4;
parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) &
parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
}
par_sqlandworker() {
p_template
}
par_sqlandworker_lo() {
p_template -S lo
}
par_sqlandworker_results() {
p_template --results /tmp/out--sql
}
par_sqlandworker_linebuffer() {
p_template --linebuffer
}
par_sqlandworker_tag() {
p_template --tag
}
par_sqlandworker_linebuffer_tag() {
p_template --linebuffer --tag
}
par_sqlandworker_compress_linebuffer_tag() {
p_template --compress --linebuffer --tag
}
par_sqlandworker_unbuffer() {
p_template -u
}
par_sqlandworker_total_jobs() {
p_template echo {#} of '{=1 $_=total_jobs(); =};'
}
par_append() {
parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>$T2;
parallel --sqlworker $DBURL sleep .3\;echo >$T1
}
par_shuf() {
MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/')
T=/tmp/parallel-bug49791-$MD5
[ -e $T ] && rm -rf $T
export PARALLEL="--shuf --result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
unset PARALLEL
wait;
# Did it compute correctly?
cat $T/1/*/*/*/stdout
# Did it shuffle
SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
export PARALLEL="--result $T"
parallel --sqlandworker $DBURL sleep .3\;echo \
::: {1..5} ::: {a..e} >$T2;
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
unset PARALLEL
wait;
NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c)
if [ $DIFFSIZE -gt 2500 ]; then
echo OK: Diff bigger than 2500 char
fi
[ -e $T ] && rm -rf $T
touch $T1
}
#p_showsqlresult() {
# SERVERURL=$1
# TABLE=$2
# sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;"
#}
#
#p_wrapper() {
# INNER=$1
# SERVERURL=$(eval echo $2)
# TABLE=TBL$RANDOM
# DBURL=$SERVERURL/$TABLE
# T1=$(tempfile)
# T2=$(tempfile)
# eval "$INNER"
# echo Exit=$?
# wait
# echo Exit=$?
# $DEBUG && sort -u $T1 $T2;
# rm $T1 $T2
# p_showsqlresult $SERVERURL $TABLE
# $DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null
#}
#
#p_template() {
# (sleep 2;
# parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) &
# parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
#}
#
#par_sqlandworker() {
# p_template
#}
#
#par_sqlandworker_lo() {
# p_template -S lo
#}
#
#par_sqlandworker_results() {
# p_template --results /tmp/out--sql
#}
#
#par_sqlandworker_linebuffer() {
# p_template --linebuffer
#}
#
#par_sqlandworker_tag() {
# p_template --tag
#}
#
#par_sqlandworker_linebuffer_tag() {
# p_template --linebuffer --tag
#}
#
#par_sqlandworker_compress_linebuffer_tag() {
# p_template --compress --linebuffer --tag
#}
#
#par_sqlandworker_unbuffer() {
# p_template -u
#}
#
#par_sqlandworker_total_jobs() {
# p_template echo {#} of '{=1 $_=total_jobs(); =};'
#}
#
#par_append() {
# parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2;
# parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>$T2;
# parallel --sqlworker $DBURL sleep .3\;echo >$T1
#}
#
#par_shuf() {
# MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/')
# T=/tmp/parallel-bug49791-$MD5
# [ -e $T ] && rm -rf $T
# export PARALLEL="--shuf --result $T"
# parallel --sqlandworker $DBURL sleep .3\;echo \
# ::: {1..5} ::: {a..e} >$T2;
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# unset PARALLEL
# wait;
# # Did it compute correctly?
# cat $T/1/*/*/*/stdout
# # Did it shuffle
# SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
# export PARALLEL="--result $T"
# parallel --sqlandworker $DBURL sleep .3\;echo \
# ::: {1..5} ::: {a..e} >$T2;
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# parallel --sqlworker $DBURL sleep .3\;echo >$T2 &
# unset PARALLEL
# wait;
# NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;")
# DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c)
# if [ $DIFFSIZE -gt 2500 ]; then
# echo OK: Diff bigger than 2500 char
# fi
# [ -e $T ] && rm -rf $T
# touch $T1
#}
#
par_empty() {
true;
}
@ -123,4 +124,4 @@ export -f $(compgen -A function | egrep 'p_|par_')
# Tested that -j0 in parallel is fastest (up to 15 jobs)
compgen -A function | grep par_ | sort |
stdout parallel -vj5 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
:::: - ::: \$MYSQL \$PG \$SQLITE
:::: - ::: \$MYSQL \$PG \$SQLITE | perl -pe 's/tbl\d+/TBL99999/gi'

View file

@ -31,9 +31,6 @@ echo '### bug #41805: Idea: propagate --env for parallel --number-of-cores'
FOO=test_csh_filter parallel --filter-hosts --env FOO,HOME -S csh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME'
echo '** bug #41805 done'
echo '### Deal with long command lines on remote servers'
perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc
echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end
@ -140,7 +137,7 @@ echo '### bug #46519: --onall ignores --transfer'
echo '### Test --nice remote'
stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b |
perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;'
perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;'
echo '**'

View file

@ -347,6 +347,8 @@ par_ksh_man() {
env_parallel -k --env myarray echo '"${myarray[{}]}"' ::: 0 1 2 3
env_parallel -k --env myarray -S server echo '"${myarray[{}]}"' ::: 0 1 2 3
echo This may never work
echo https://unix.stackexchange.com/questions/457031/extract-full-function-definitions
env_parallel --argsep --- env_parallel -k echo ::: multi level --- env_parallel
env_parallel ::: true false true false
@ -1502,6 +1504,7 @@ par_fish_env_parallel() {
echo 'bug #50435: Remote fifo broke in 20150522'
# Due to $PARALLEL_TMP being transferred
set OK OK
echo TODO fix env_parallel --fifo
echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {}; and echo $OK'
echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; and echo $OK'
_EOF

View file

@ -41,6 +41,7 @@ rm /tmp/parallel-script-for-script3
stdout parallel --citation < /dev/null
touch ~/.parallel/will-cite
echo 1 > ~/.parallel/runs-without-willing-to-cite
# Clear screen
eval `resize`
seq $LINES | parallel -N0 echo > /dev/tty

View file

@ -18,8 +18,8 @@ perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch
echo '### rm'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 | egrep -v 'parallel: Warning: Starting|parallel: Warning: Consider'
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort
find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort

View file

@ -37,6 +37,7 @@ par_special_char() {
echo a"$SPC"b 5
LANG=C stdout parallel --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5
# \ misses due to quoting incompatiblilty between bash and csh
LANG=C stdout parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5
LANG=C stdout parallel -S tcsh@localhost --env SPC echo 'a"$SPC"b' ::: 5
}

View file

@ -27,40 +27,28 @@ export -f par_tmux
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj8 --delay 1 --timeout 100 --retries 1 -k --joblog /tmp/jl-`basename $0` -L1
echo '### tmux-1.9'
seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 2000 2018 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 0000 10 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1001 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 3001 10 4000 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 4001 10 4030 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux-1.9 fails'
echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 4036 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 4037 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo 4038 | PARALLEL_TMUX=tmux-1.9 par_tmux
echo '### tmux-1.8'
seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 1 5 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 5 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 201 5 300 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 301 5 400 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 401 5 460 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux-1.8 fails'
echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 462 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 463 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo 464 | PARALLEL_TMUX=tmux-1.8 par_tmux
echo '### tmux-1.8 0..255 ascii'
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' |

View file

@ -49,18 +49,6 @@ echo '### Test --spreadstdin -k';
echo '### Test --spreadstdin --files';
nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
echo '### Test --number-of-cpus';
stdout $NICEPAR --number-of-cpus
echo '### Test --number-of-cores';
stdout $NICEPAR --number-of-cores
echo '### Test --use-cpus-instead-of-cores';
(seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done &
(seq 1 8 | stdout parallel -j100% sleep) && echo cores done &
echo 'Cores should complete first on machines with less than 8 physical CPUs';
wait
echo '### Test --tag ::: a ::: b';
stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b

View file

@ -348,9 +348,9 @@ echo '**'
echo 'bug #47290: xargs: Warning: a NUL character occurred in the input'
bug #47290: xargs: Warning: a NUL character occurred in the input
perl -e 'print "foo\0not printed"' | parallel echo
foo
parallel: Warning: a NUL character occurred in the input.
parallel: Warning: It cannot be passed through in the argument list.
foo\0not printed
parallel: Warning: A NUL character in the input was replaced with \0.
parallel: Warning: NUL cannot be passed through in the argument list.
parallel: Warning: Did you mean to use the --null option?
echo '**'
**
@ -979,106 +979,106 @@ h i
97
98
99
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 1
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 10
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 100
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 11
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 12
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 13
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 14
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 15
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 16
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 17
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 18
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 19
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 2
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 20
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 21
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 22
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 23
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 24
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 25
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 26
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 27
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 28
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 29
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 3
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 30
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 31
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 32
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 33
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 34
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 35
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 36
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 37
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 38
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 39
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 4
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 40
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 41
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 42
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 43
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 44
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 45
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 46
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 47
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 48
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 49
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 5
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 50
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 51
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 52
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 53
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 54
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 55
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 56
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 57
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 58
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 59
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 6
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 60
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 61
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 62
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 63
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 64
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 65
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 66
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 67
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 68
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 69
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 7
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 70
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 71
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 72
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 73
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 74
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 75
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 76
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 77
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 78
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 79
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 8
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 80
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 81
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 82
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 83
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 84
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 85
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 86
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 87
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 88
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 89
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 9
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 90
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 91
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 92
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 93
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 94
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 95
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 96
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 1
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 10
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 100
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 11
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 12
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 13
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 14
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 15
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 16
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 17
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 18
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 19
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 20
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 21
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 22
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 23
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 24
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 25
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 26
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 27
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 28
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 29
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 3
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 30
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 31
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 32
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 33
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 34
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 35
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 36
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 37
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 38
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 39
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 4
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 40
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 41
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 42
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 43
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 44
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 45
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 46
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 47
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 48
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 49
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 5
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 50
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 51
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 52
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 53
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 54
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 55
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 56
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 57
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 58
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 59
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 6
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 60
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 61
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 62
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 63
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 64
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 65
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 66
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 67
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 68
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 69
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 7
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 70
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 71
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 72
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 73
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 74
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 75
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 76
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 77
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 78
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 79
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 8
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 80
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 81
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 82
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 83
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 84
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 85
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 86
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 87
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 88
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 89
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 9
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 90
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 91
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 92
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 93
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 94
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 95
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 96
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 97
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 98
perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 99
echo '### Test 0-arguments'
### Test 0-arguments
seq 1 2 | parallel -k -n0 echo n0
@ -1321,7 +1321,7 @@ par_expansion_in_colsep AB
par_extglob env_parallel
par_file_ending_in_newline ### Hans found a bug giving unitialized variable
par_file_ending_in_newline gzip /tmp/parallel_f1
par_file_ending_in_newline gzip /tmp/parallel_f2'
par_file_ending_in_newline gzip '/tmp/parallel_f2
par_file_ending_in_newline '
par_halt_one_job # Halt soon if there is a single job
par_halt_one_job should run 0 1 = job 1 2
@ -1372,8 +1372,8 @@ par_link_files_as_only_arg 3 3 3
par_locale_quoting ### quoting in different locales
par_locale_quoting £`/tmp/test£`
par_locale_quoting $LC_ALL £`/tmp/test£`
par_locale_quoting echo $LC_ALL \£\`/tmp/test\£\`
par_locale_quoting C £`/tmp/test£`
par_locale_quoting echo $LC_ALL '£`/tmp/test£`'
par_locale_quoting zh_HK.big5hkscs £`/tmp/test£`
par_newline_in_command Command with newline and positional replacement strings
par_newline_in_command O K
par_no_command_given ### Test bugfix if no command given

View file

@ -256,6 +256,9 @@ par_linebuffer_tag_slow_output a a
par_linebuffer_tag_slow_output a
par_linebuffer_tag_slow_output b b
par_linebuffer_tag_slow_output b
par_long_line_remote ### Deal with long command lines on remote servers
par_long_line_remote 2 6 30006
par_long_line_remote 2 50 250050
par_maxlinelen_X_I ### Test max line length -X -I
par_maxlinelen_X_I 3cfc69ee81b0fe7fdbe8eb059ad2da61 -
par_maxlinelen_X_I Chars per line (817788/7): 116826
@ -523,6 +526,15 @@ par_slow_total_jobs b
par_slow_total_jobs 1
par_slow_total_jobs 2
par_slow_total_jobs parallel: Warning: Reading X arguments took longer than XX seconds.
par_sockets_cores_threads ### Test --number-of-sockets/cores/threads
par_sockets_cores_threads 1
par_sockets_cores_threads 2
par_sockets_cores_threads 2
par_sockets_cores_threads 2
par_sockets_cores_threads ### Test --use-sockets-instead-of-threads
par_sockets_cores_threads threads done
par_sockets_cores_threads sockets done
par_sockets_cores_threads Threads should complete first on machines with less than 8 sockets
par_tmux_fg bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S tmp attach
par_tmux_fg open terminal failed: not a terminal

View file

@ -27,84 +27,84 @@ par_failing_compressor Compress with failing (de)compressor
par_failing_compressor Test --tag/--line-buffer/--files in all combinations
par_failing_compressor Test working/failing compressor/decompressor in all combinations
par_failing_compressor (-k is used as a dummy argument)
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true
par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false
par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true
par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false
par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel: Error: cat;false failed.
par_fifo_under_csh ### Test --fifo under csh
@ -371,26 +371,26 @@ par_result /tmp/parallel_results_test/testC/a/II/b/IIII/seq
par_result /tmp/parallel_results_test/testC/a/II/b/IIII/stderr
par_result /tmp/parallel_results_test/testC/a/II/b/IIII/stdout
par_result ### Test --results --header : piped
par_result parallel: Warning: a NUL character occurred in the input.
par_result parallel: Warning: It cannot be passed through in the argument list.
par_result parallel: Warning: A NUL character in the input was replaced with \0.
par_result parallel: Warning: NUL cannot be passed through in the argument list.
par_result parallel: Warning: Did you mean to use the --null option?
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/seq
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stderr
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stdout
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/seq
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/stderr
par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/stdout
par_result ### Test --results --header : piped - non-existing column header
par_result parallel: Warning: a NUL character occurred in the input.
par_result parallel: Warning: It cannot be passed through in the argument list.
par_result parallel: Warning: A NUL character in the input was replaced with \0.
par_result parallel: Warning: NUL cannot be passed through in the argument list.
par_result parallel: Warning: Did you mean to use the --null option?
par_result /tmp/parallel_results_test/testG/
par_result /tmp/parallel_results_test/testG/Col1
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/seq
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stderr
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stdout
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/seq
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/stderr
par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/stdout
par_result /tmp/parallel_results_test/testG/Col1/v1
par_result /tmp/parallel_results_test/testG/Col1/v1/2
par_result /tmp/parallel_results_test/testG/Col1/v1/2/v2

View file

@ -108,8 +108,8 @@ par_macron
par_macron "¯" ¯
par_macron ¯®
par_macron ¯®
par_macron ¯® ¯®
par_macron ¯® ¯®
par_macron ¯® ¯
par_macron ¯® ¯
par_macron ¯®
par_macron ¯® ¯
par_macron "¯®" ¯
@ -164,41 +164,41 @@ par_race_condition1 8
par_race_condition1 9
par_race_condition1 10
par_shellquote ### Test --shellquote in all shells
par_shellquote ash \\\\\\\\ '
par_shellquote ash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote bash \\\\\\\\ '
par_shellquote bash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote ash '
par_shellquote ash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote bash '
par_shellquote bash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote csh \\\\\\\\ "\
par_shellquote csh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote dash \\\\\\\\ '
par_shellquote dash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote fish \\\\\\\\ '
par_shellquote fish '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote fizsh \\\\\\\\ '
par_shellquote fizsh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote ksh \\\\\\\\ '
par_shellquote ksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote ksh93 \\\\\\\\ '
par_shellquote ksh93 '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote lksh \\\\\\\\ '
par_shellquote lksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote mksh \\\\\\\\ '
par_shellquote mksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote posh \\\\\\\\ '
par_shellquote posh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote dash '
par_shellquote dash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote fish '
par_shellquote fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote fizsh '
par_shellquote fizsh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote ksh '
par_shellquote ksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote ksh93 '
par_shellquote ksh93  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote lksh '
par_shellquote lksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote mksh '
par_shellquote mksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote posh '
par_shellquote posh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote rzsh zsh:1: /bin/echo: restricted
par_shellquote sash \\\\\\\\ '
par_shellquote sash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote sh \\\\\\\\ '
par_shellquote sh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote static-sh \\\\\\\\ '
par_shellquote static-sh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote sash '
par_shellquote sash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote sh '
par_shellquote sh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote static-sh '
par_shellquote static-sh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote tcsh \\\\\\\\ "\
par_shellquote tcsh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote yash \\\\\\\\ '
par_shellquote yash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote zsh \\\\\\\\ '
par_shellquote zsh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote yash '
par_shellquote yash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote zsh '
par_shellquote zsh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
par_shellquote csh \\\\\\\\ "\
par_shellquote csh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_shellquote tcsh \\\\\\\\ "\

View file

@ -58,7 +58,7 @@ par_kill_term_twice bash-+-perl---bash---sleep
par_kill_term_twice `-pstree
par_kill_term_twice parallel: SIGTERM received. No new jobs will be started.
par_kill_term_twice parallel: Waiting for these 1 jobs to finish. Send SIGTERM again to stop now.
par_kill_term_twice parallel: bash -c sleep\ 120\ \&\ pid\=\$\!\;\ wait\ \$pid 1
par_kill_term_twice parallel: bash -c 'sleep 120 & pid=$!; wait $pid' 1
par_kill_term_twice bash-+-perl---bash---sleep
par_kill_term_twice `-pstree
par_kill_term_twice bash---pstree

View file

@ -12,20 +12,20 @@ par_print_before_halt_on_error ### What is printed before the jobs are killed
par_print_before_halt_on_error -2 exit code 0
par_print_before_halt_on_error -2 0.1 0.1
par_print_before_halt_on_error -2 parallel: This job succeeded:
par_print_before_halt_on_error -2 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -2\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 0.1
par_print_before_halt_on_error -2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -2 > 0 ? exit shift : exit not shift;' 0.1
par_print_before_halt_on_error -1 exit code 0
par_print_before_halt_on_error -1 0.1 0.1
par_print_before_halt_on_error -1 parallel: This job succeeded:
par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 0.1
par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 0.1
par_print_before_halt_on_error -1 parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_print_before_halt_on_error -1 parallel: This job succeeded:
par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1
par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 1
par_print_before_halt_on_error -1 parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_print_before_halt_on_error -1 3.2 3.2
par_print_before_halt_on_error -1 0 0
par_print_before_halt_on_error -1 1 1
par_print_before_halt_on_error -1 parallel: This job succeeded:
par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3.2
par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 3.2
par_print_before_halt_on_error 0 exit code 1
par_print_before_halt_on_error 0 0.1 0.1
par_print_before_halt_on_error 0 3.2 3.2
@ -42,22 +42,22 @@ par_print_before_halt_on_error 0 8 8
par_print_before_halt_on_error 1 exit code 1
par_print_before_halt_on_error 1 0.1 0.1
par_print_before_halt_on_error 1 parallel: This job failed:
par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1
par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 1
par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 3 jobs to finish.
par_print_before_halt_on_error 1 parallel: This job failed:
par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 2
par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 2
par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 2 jobs to finish.
par_print_before_halt_on_error 1 3.2 3.2
par_print_before_halt_on_error 1 0 0
par_print_before_halt_on_error 1 1 1
par_print_before_halt_on_error 1 2 2
par_print_before_halt_on_error 1 parallel: This job failed:
par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3.2
par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 3.2
par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 1 jobs to finish.
par_print_before_halt_on_error 1 3 3
par_print_before_halt_on_error 1 parallel: This job failed:
par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3
par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 3
par_print_before_halt_on_error 2 exit code 1
par_print_before_halt_on_error 2 0.1 0.1
par_print_before_halt_on_error 2 parallel: This job failed:
par_print_before_halt_on_error 2 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 2\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1
par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 2 > 0 ? exit shift : exit not shift;' 1

View file

@ -1,4 +1,4 @@
par_append_different_cmd $MYSQL p_wrapper par_append_different_cmd \$MYSQL
par_append_different_cmd $MYSQL p_wrapper par_append_different_cmd '$MYSQL'
par_append_different_cmd $MYSQL Exit=0
par_append_different_cmd $MYSQL Exit=0
par_append_different_cmd $MYSQL Command V1 V2 Stdout Stderr
@ -52,7 +52,7 @@ par_append_different_cmd $MYSQL sleep .3;echo B-15 15 B B-15\n
par_append_different_cmd $MYSQL sleep .3;echo C-15 15 C C-15\n
par_append_different_cmd $MYSQL sleep .3;echo D-15 15 D D-15\n
par_append_different_cmd $MYSQL sleep .3;echo E-15 15 E E-15\n
par_append_different_cmd $PG p_wrapper par_append_different_cmd \$PG
par_append_different_cmd $PG p_wrapper par_append_different_cmd '$PG'
par_append_different_cmd $PG Exit=0
par_append_different_cmd $PG Exit=0
par_append_different_cmd $PG command | v1 | v2 | stdout | stderr
@ -159,7 +159,7 @@ par_append_different_cmd $PG sleep .3;echo E-15 | 15 | E | E-15 +|
par_append_different_cmd $PG | | | |
par_append_different_cmd $PG (50 rows)
par_append_different_cmd $PG
par_append_different_cmd $SQLITE p_wrapper par_append_different_cmd \$SQLITE
par_append_different_cmd $SQLITE p_wrapper par_append_different_cmd '$SQLITE'
par_append_different_cmd $SQLITE Exit=0
par_append_different_cmd $SQLITE Exit=0
par_append_different_cmd $SQLITE Command|V1|V2|Stdout|Stderr
@ -263,7 +263,7 @@ par_append_different_cmd $SQLITE sleep .3;echo D-15|15|D|D-15
par_append_different_cmd $SQLITE |
par_append_different_cmd $SQLITE sleep .3;echo E-15|15|E|E-15
par_append_different_cmd $SQLITE |
par_no_table $MYSQL p_wrapper par_no_table \$MYSQL
par_no_table $MYSQL p_wrapper par_no_table '$MYSQL'
par_no_table $MYSQL bug #50018: --dburl without table dies
par_no_table $MYSQL 255
par_no_table $MYSQL 255
@ -275,7 +275,7 @@ par_no_table $MYSQL true dummy dummy dummy dummy
par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table.
par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table.
par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table.
par_no_table $PG p_wrapper par_no_table \$PG
par_no_table $PG p_wrapper par_no_table '$PG'
par_no_table $PG bug #50018: --dburl without table dies
par_no_table $PG 255
par_no_table $PG 255
@ -290,7 +290,7 @@ par_no_table $PG
par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table.
par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table.
par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table.
par_no_table $SQLITE p_wrapper par_no_table \$SQLITE
par_no_table $SQLITE p_wrapper par_no_table '$SQLITE'
par_no_table $SQLITE bug #50018: --dburl without table dies
par_no_table $SQLITE 255
par_no_table $SQLITE 255
@ -302,7 +302,7 @@ par_no_table $SQLITE true dummy dummy|dummy|dummy||
par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table.
par_shuf $MYSQL p_wrapper par_shuf \$MYSQL
par_shuf $MYSQL p_wrapper par_shuf '$MYSQL'
par_shuf $MYSQL 1 a
par_shuf $MYSQL 1 b
par_shuf $MYSQL 1 c
@ -357,7 +357,7 @@ par_shuf $MYSQL sleep .3;echo 5 b 5 b /tmp/parallel-bug49791-c20/1/5/2/b/stdout
par_shuf $MYSQL sleep .3;echo 5 c 5 c /tmp/parallel-bug49791-c20/1/5/2/c/stdout /tmp/parallel-bug49791-c20/1/5/2/c/stderr
par_shuf $MYSQL sleep .3;echo 5 d 5 d /tmp/parallel-bug49791-c20/1/5/2/d/stdout /tmp/parallel-bug49791-c20/1/5/2/d/stderr
par_shuf $MYSQL sleep .3;echo 5 e 5 e /tmp/parallel-bug49791-c20/1/5/2/e/stdout /tmp/parallel-bug49791-c20/1/5/2/e/stderr
par_shuf $PG p_wrapper par_shuf \$PG
par_shuf $PG p_wrapper par_shuf '$PG'
par_shuf $PG 1 a
par_shuf $PG 1 b
par_shuf $PG 1 c
@ -415,7 +415,7 @@ par_shuf $PG sleep .3;echo 5 d | 5 | d | /tmp/parallel-bug49791-792/1/5/2/d/s
par_shuf $PG sleep .3;echo 5 e | 5 | e | /tmp/parallel-bug49791-792/1/5/2/e/stdout | /tmp/parallel-bug49791-792/1/5/2/e/stderr
par_shuf $PG (25 rows)
par_shuf $PG
par_shuf $SQLITE p_wrapper par_shuf \$SQLITE
par_shuf $SQLITE p_wrapper par_shuf '$SQLITE'
par_shuf $SQLITE 1 a
par_shuf $SQLITE 1 b
par_shuf $SQLITE 1 c
@ -470,7 +470,7 @@ par_shuf $SQLITE sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2/b/stdout
par_shuf $SQLITE sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr
par_shuf $SQLITE sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr
par_shuf $SQLITE sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr
par_sql_joblog $MYSQL p_wrapper par_sql_joblog \$MYSQL
par_sql_joblog $MYSQL p_wrapper par_sql_joblog '$MYSQL'
par_sql_joblog $MYSQL ### should only give a single --joblog heading
par_sql_joblog $MYSQL ### --sqlmaster/--sqlworker
par_sql_joblog $MYSQL Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
@ -604,7 +604,7 @@ par_sql_joblog $MYSQL sleep .3;echo 5 b 5 b 5 b\n
par_sql_joblog $MYSQL sleep .3;echo 5 c 5 c 5 c\n
par_sql_joblog $MYSQL sleep .3;echo 5 d 5 d 5 d\n
par_sql_joblog $MYSQL sleep .3;echo 5 e 5 e 5 e\n
par_sql_joblog $PG p_wrapper par_sql_joblog \$PG
par_sql_joblog $PG p_wrapper par_sql_joblog '$PG'
par_sql_joblog $PG ### should only give a single --joblog heading
par_sql_joblog $PG ### --sqlmaster/--sqlworker
par_sql_joblog $PG Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
@ -766,7 +766,7 @@ par_sql_joblog $PG sleep .3;echo 5 e | 5 | e | 5 e +|
par_sql_joblog $PG | | | |
par_sql_joblog $PG (25 rows)
par_sql_joblog $PG
par_sql_joblog $SQLITE p_wrapper par_sql_joblog \$SQLITE
par_sql_joblog $SQLITE p_wrapper par_sql_joblog '$SQLITE'
par_sql_joblog $SQLITE ### should only give a single --joblog heading
par_sql_joblog $SQLITE ### --sqlmaster/--sqlworker
par_sql_joblog $SQLITE Seq Host Starttime JobRuntime Send Receive Exitval Signal Command
@ -925,7 +925,7 @@ par_sql_joblog $SQLITE sleep .3;echo 5 d|5|d|5 d
par_sql_joblog $SQLITE |
par_sql_joblog $SQLITE sleep .3;echo 5 e|5|e|5 e
par_sql_joblog $SQLITE |
par_sqlandworker $MYSQL p_wrapper par_sqlandworker \$MYSQL
par_sqlandworker $MYSQL p_wrapper par_sqlandworker '$MYSQL'
par_sqlandworker $MYSQL Exit=0
par_sqlandworker $MYSQL Exit=0
par_sqlandworker $MYSQL Command V1 V2 Stdout Stderr
@ -954,7 +954,7 @@ par_sqlandworker $MYSQL sleep .3;echo 5 b 5 b 5 b\n
par_sqlandworker $MYSQL sleep .3;echo 5 c 5 c 5 c\n
par_sqlandworker $MYSQL sleep .3;echo 5 d 5 d 5 d\n
par_sqlandworker $MYSQL sleep .3;echo 5 e 5 e 5 e\n
par_sqlandworker $PG p_wrapper par_sqlandworker \$PG
par_sqlandworker $PG p_wrapper par_sqlandworker '$PG'
par_sqlandworker $PG Exit=0
par_sqlandworker $PG Exit=0
par_sqlandworker $PG command | v1 | v2 | stdout | stderr
@ -1011,7 +1011,7 @@ par_sqlandworker $PG sleep .3;echo 5 e | 5 | e | 5 e +|
par_sqlandworker $PG | | | |
par_sqlandworker $PG (25 rows)
par_sqlandworker $PG
par_sqlandworker $SQLITE p_wrapper par_sqlandworker \$SQLITE
par_sqlandworker $SQLITE p_wrapper par_sqlandworker '$SQLITE'
par_sqlandworker $SQLITE Exit=0
par_sqlandworker $SQLITE Exit=0
par_sqlandworker $SQLITE Command|V1|V2|Stdout|Stderr
@ -1065,7 +1065,7 @@ par_sqlandworker $SQLITE sleep .3;echo 5 d|5|d|5 d
par_sqlandworker $SQLITE |
par_sqlandworker $SQLITE sleep .3;echo 5 e|5|e|5 e
par_sqlandworker $SQLITE |
par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo \$MYSQL
par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo '$MYSQL'
par_sqlandworker_lo $MYSQL Exit=0
par_sqlandworker_lo $MYSQL Exit=0
par_sqlandworker_lo $MYSQL Command V1 V2 Stdout Stderr
@ -1094,7 +1094,7 @@ par_sqlandworker_lo $MYSQL sleep .3;echo 5 b 5 b 5 b\n
par_sqlandworker_lo $MYSQL sleep .3;echo 5 c 5 c 5 c\n
par_sqlandworker_lo $MYSQL sleep .3;echo 5 d 5 d 5 d\n
par_sqlandworker_lo $MYSQL sleep .3;echo 5 e 5 e 5 e\n
par_sqlandworker_lo $PG p_wrapper par_sqlandworker_lo \$PG
par_sqlandworker_lo $PG p_wrapper par_sqlandworker_lo '$PG'
par_sqlandworker_lo $PG Exit=0
par_sqlandworker_lo $PG Exit=0
par_sqlandworker_lo $PG command | v1 | v2 | stdout | stderr
@ -1151,7 +1151,7 @@ par_sqlandworker_lo $PG sleep .3;echo 5 e | 5 | e | 5 e +|
par_sqlandworker_lo $PG | | | |
par_sqlandworker_lo $PG (25 rows)
par_sqlandworker_lo $PG
par_sqlandworker_lo $SQLITE p_wrapper par_sqlandworker_lo \$SQLITE
par_sqlandworker_lo $SQLITE p_wrapper par_sqlandworker_lo '$SQLITE'
par_sqlandworker_lo $SQLITE Exit=0
par_sqlandworker_lo $SQLITE Exit=0
par_sqlandworker_lo $SQLITE Command|V1|V2|Stdout|Stderr
@ -1205,7 +1205,7 @@ par_sqlandworker_lo $SQLITE sleep .3;echo 5 d|5|d|5 d
par_sqlandworker_lo $SQLITE |
par_sqlandworker_lo $SQLITE sleep .3;echo 5 e|5|e|5 e
par_sqlandworker_lo $SQLITE |
par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results \$MYSQL
par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results '$MYSQL'
par_sqlandworker_results $MYSQL Exit=0
par_sqlandworker_results $MYSQL Exit=0
par_sqlandworker_results $MYSQL Command V1 V2 Stdout Stderr
@ -1234,7 +1234,7 @@ par_sqlandworker_results $MYSQL sleep .3;echo 5 b 5 b /tmp/out--sql/1/5/2/b/stdo
par_sqlandworker_results $MYSQL sleep .3;echo 5 c 5 c /tmp/out--sql/1/5/2/c/stdout /tmp/out--sql/1/5/2/c/stderr
par_sqlandworker_results $MYSQL sleep .3;echo 5 d 5 d /tmp/out--sql/1/5/2/d/stdout /tmp/out--sql/1/5/2/d/stderr
par_sqlandworker_results $MYSQL sleep .3;echo 5 e 5 e /tmp/out--sql/1/5/2/e/stdout /tmp/out--sql/1/5/2/e/stderr
par_sqlandworker_results $PG p_wrapper par_sqlandworker_results \$PG
par_sqlandworker_results $PG p_wrapper par_sqlandworker_results '$PG'
par_sqlandworker_results $PG Exit=0
par_sqlandworker_results $PG Exit=0
par_sqlandworker_results $PG command | v1 | v2 | stdout | stderr
@ -1266,7 +1266,7 @@ par_sqlandworker_results $PG sleep .3;echo 5 d | 5 | d | /tmp/out--sql/1/5/2/
par_sqlandworker_results $PG sleep .3;echo 5 e | 5 | e | /tmp/out--sql/1/5/2/e/stdout | /tmp/out--sql/1/5/2/e/stderr
par_sqlandworker_results $PG (25 rows)
par_sqlandworker_results $PG
par_sqlandworker_results $SQLITE p_wrapper par_sqlandworker_results \$SQLITE
par_sqlandworker_results $SQLITE p_wrapper par_sqlandworker_results '$SQLITE'
par_sqlandworker_results $SQLITE Exit=0
par_sqlandworker_results $SQLITE Exit=0
par_sqlandworker_results $SQLITE Command|V1|V2|Stdout|Stderr
@ -1295,7 +1295,7 @@ par_sqlandworker_results $SQLITE sleep .3;echo 5 b|5|b|/tmp/out--sql/1/5/2/b/std
par_sqlandworker_results $SQLITE sleep .3;echo 5 c|5|c|/tmp/out--sql/1/5/2/c/stdout|/tmp/out--sql/1/5/2/c/stderr
par_sqlandworker_results $SQLITE sleep .3;echo 5 d|5|d|/tmp/out--sql/1/5/2/d/stdout|/tmp/out--sql/1/5/2/d/stderr
par_sqlandworker_results $SQLITE sleep .3;echo 5 e|5|e|/tmp/out--sql/1/5/2/e/stdout|/tmp/out--sql/1/5/2/e/stderr
par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag \$MYSQL
par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag '$MYSQL'
par_sqlandworker_tag $MYSQL Exit=0
par_sqlandworker_tag $MYSQL Exit=0
par_sqlandworker_tag $MYSQL Command V1 V2 Stdout Stderr
@ -1324,7 +1324,7 @@ par_sqlandworker_tag $MYSQL sleep .3;echo 5 b 5 b 5 b\t5 b\n
par_sqlandworker_tag $MYSQL sleep .3;echo 5 c 5 c 5 c\t5 c\n
par_sqlandworker_tag $MYSQL sleep .3;echo 5 d 5 d 5 d\t5 d\n
par_sqlandworker_tag $MYSQL sleep .3;echo 5 e 5 e 5 e\t5 e\n
par_sqlandworker_tag $PG p_wrapper par_sqlandworker_tag \$PG
par_sqlandworker_tag $PG p_wrapper par_sqlandworker_tag '$PG'
par_sqlandworker_tag $PG Exit=0
par_sqlandworker_tag $PG Exit=0
par_sqlandworker_tag $PG command | v1 | v2 | stdout | stderr
@ -1381,7 +1381,7 @@ par_sqlandworker_tag $PG sleep .3;echo 5 e | 5 | e | 5 e 5 e+|
par_sqlandworker_tag $PG | | | |
par_sqlandworker_tag $PG (25 rows)
par_sqlandworker_tag $PG
par_sqlandworker_tag $SQLITE p_wrapper par_sqlandworker_tag \$SQLITE
par_sqlandworker_tag $SQLITE p_wrapper par_sqlandworker_tag '$SQLITE'
par_sqlandworker_tag $SQLITE Exit=0
par_sqlandworker_tag $SQLITE Exit=0
par_sqlandworker_tag $SQLITE Command|V1|V2|Stdout|Stderr
@ -1435,7 +1435,7 @@ par_sqlandworker_tag $SQLITE sleep .3;echo 5 d|5|d|5 d 5 d
par_sqlandworker_tag $SQLITE |
par_sqlandworker_tag $SQLITE sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_tag $SQLITE |
par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs \$MYSQL
par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs '$MYSQL'
par_sqlandworker_total_jobs $MYSQL Exit=0
par_sqlandworker_total_jobs $MYSQL Exit=0
par_sqlandworker_total_jobs $MYSQL Command V1 V2 Stdout Stderr
@ -1464,7 +1464,7 @@ par_sqlandworker_total_jobs $MYSQL echo 22 of 25; sleep .3;echo 5 b 22 of 25\n\n
par_sqlandworker_total_jobs $MYSQL echo 23 of 25; sleep .3;echo 5 c 23 of 25\n\n
par_sqlandworker_total_jobs $MYSQL echo 24 of 25; sleep .3;echo 5 d 24 of 25\n\n
par_sqlandworker_total_jobs $MYSQL echo 25 of 25; sleep .3;echo 5 e 25 of 25\n\n
par_sqlandworker_total_jobs $PG p_wrapper par_sqlandworker_total_jobs \$PG
par_sqlandworker_total_jobs $PG p_wrapper par_sqlandworker_total_jobs '$PG'
par_sqlandworker_total_jobs $PG Exit=0
par_sqlandworker_total_jobs $PG Exit=0
par_sqlandworker_total_jobs $PG command | v1 | v2 | stdout | stderr
@ -1546,7 +1546,7 @@ par_sqlandworker_total_jobs $PG | | |
par_sqlandworker_total_jobs $PG | | | |
par_sqlandworker_total_jobs $PG (25 rows)
par_sqlandworker_total_jobs $PG
par_sqlandworker_total_jobs $SQLITE p_wrapper par_sqlandworker_total_jobs \$SQLITE
par_sqlandworker_total_jobs $SQLITE p_wrapper par_sqlandworker_total_jobs '$SQLITE'
par_sqlandworker_total_jobs $SQLITE Exit=0
par_sqlandworker_total_jobs $SQLITE Exit=0
par_sqlandworker_total_jobs $SQLITE Command|V1|V2|Stdout|Stderr
@ -1625,7 +1625,7 @@ par_sqlandworker_total_jobs $SQLITE |
par_sqlandworker_total_jobs $SQLITE echo 25 of 25; sleep .3;echo|5|e|25 of 25
par_sqlandworker_total_jobs $SQLITE
par_sqlandworker_total_jobs $SQLITE |
par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer \$MYSQL
par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer '$MYSQL'
par_sqlandworker_unbuffer $MYSQL Exit=0
par_sqlandworker_unbuffer $MYSQL Exit=0
par_sqlandworker_unbuffer $MYSQL Command V1 V2 Stdout Stderr
@ -1654,7 +1654,7 @@ par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 b 5 b
par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 c 5 c
par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 d 5 d
par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 e 5 e
par_sqlandworker_unbuffer $PG p_wrapper par_sqlandworker_unbuffer \$PG
par_sqlandworker_unbuffer $PG p_wrapper par_sqlandworker_unbuffer '$PG'
par_sqlandworker_unbuffer $PG Exit=0
par_sqlandworker_unbuffer $PG Exit=0
par_sqlandworker_unbuffer $PG command | v1 | v2 | stdout | stderr
@ -1686,7 +1686,7 @@ par_sqlandworker_unbuffer $PG sleep .3;echo 5 d | 5 | d | |
par_sqlandworker_unbuffer $PG sleep .3;echo 5 e | 5 | e | |
par_sqlandworker_unbuffer $PG (25 rows)
par_sqlandworker_unbuffer $PG
par_sqlandworker_unbuffer $SQLITE p_wrapper par_sqlandworker_unbuffer \$SQLITE
par_sqlandworker_unbuffer $SQLITE p_wrapper par_sqlandworker_unbuffer '$SQLITE'
par_sqlandworker_unbuffer $SQLITE Exit=0
par_sqlandworker_unbuffer $SQLITE Exit=0
par_sqlandworker_unbuffer $SQLITE Command|V1|V2|Stdout|Stderr

File diff suppressed because it is too large Load diff

View file

@ -3,25 +3,25 @@ echo '### Test --load remote'
ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -qN0 perl -e while\(1\)\{\ \}' & sleep 1; stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"'
OK
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
parallel: Warning: This job was killed because it timed out:
parallel: Warning: perl -e while\(1\)\{\ \}
parallel: Warning: perl -e 'while(1){ }' ''
echo '**'
**
echo '### Stop if all hosts are filtered and there are no hosts left to run on'
@ -58,10 +58,6 @@ FOO=test_csh_filter
HOME=~
echo '** bug #41805 done'
** bug #41805 done
echo '### Deal with long command lines on remote servers'
### Deal with long command lines on remote servers
perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc
2 26 130026
echo '### Test bug #34241: --pipe should not spawn unneeded processes'
### Test bug #34241: --pipe should not spawn unneeded processes
seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end
@ -211,8 +207,8 @@ ls: cannot access 'bug46519.cc': No such file or directory
ls: cannot access 'bug46519.ccc': No such file or directory
echo '### Test --nice remote'
### Test --nice remote
stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;'
ssh lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;'
ssh lo -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$bashfunc = "";@ARGV="PAR=a bash -c \"echo \\\$PAR b\"";$shell="$ENV{SHELL}";$tmpdir="/tmp/parallel-local-ssh1-tmpdir";$nice=1;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
a b
echo '**'
**

View file

@ -90,14 +90,14 @@ par_tee_ssh 2
par_tee_ssh 3
par_tee_ssh 3
par_wd_no_such_dir ### --wd no-such-dir - csh
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1
par_wd_no_such_dir ### --wd no-such-dir - tcsh
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1
par_wd_no_such_dir ### --wd no-such-dir - bash
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1

View file

@ -127,18 +127,18 @@ par_zsh_man exit value 2 should be 2
par_zsh_man Unknown option: no-such-option
par_zsh_man exit value 255 should be 255
par_zsh_funky
par_zsh_funky \\\\\\\\
par_zsh_funky 
par_zsh_funky 
par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_zsh_funky space 6
par_zsh_funky space 6
par_zsh_funky ' '
par_zsh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_zsh_funky 3 arg alias_works
par_zsh_funky 3 arg alias_works_over_ssh
par_zsh_funky Funky-
par_zsh_funky Funky-
par_zsh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_zsh_funky assoc_val_a
par_zsh_funky assoc_val_a
par_zsh_funky function_works
@ -368,7 +368,7 @@ par_tcsh_funky
par_tcsh_funky 3 arg alias_works
par_tcsh_funky 3 arg alias_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky alias_var_works
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-funky alias_var_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩-funky alias_var_works_over_ssh
par_tcsh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_tcsh_funky func_echo: Command not found.
par_tcsh_funky func_echo: Command not found.
@ -474,10 +474,10 @@ par_sh_man exit value 2 should be 2
par_sh_man Unknown option: no-such-option
par_sh_man exit value 255 should be 255
par_sh_funky
par_sh_funky ' '
par_sh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_sh_funky 3 arg alias_works
par_sh_funky 3 arg alias_works_over_ssh
par_sh_funky \\\\\\\\
par_sh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_sh_environment_too_big bug #50815: env_parallel should warn if the environment is too big
par_sh_environment_too_big OK_bigvar
par_sh_environment_too_big OK_bigvar_remote
@ -681,16 +681,16 @@ par_mksh_man exit value 2 should be 2
par_mksh_man Unknown option: no-such-option
par_mksh_man exit value 255 should be 255
par_mksh_funky
par_mksh_funky \\\\\\\\
par_mksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_mksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_mksh_funky space 6
par_mksh_funky space 6
par_mksh_funky ' '
par_mksh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_mksh_funky 3 arg alias_works
par_mksh_funky 3 arg alias_works_over_ssh
par_mksh_funky Funky-
par_mksh_funky Funky-
par_mksh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_mksh_funky function_works
par_mksh_funky function_works_over_ssh
par_mksh_funky myvar works
@ -955,20 +955,25 @@ par_ksh_man arrays
par_ksh_man with = & " ! '
par_ksh_man work,
par_ksh_man too
par_ksh_man This may never work
par_ksh_man https://unix.stackexchange.com/questions/457031/extract-full-function-definitions
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man exit value 2 should be 2
par_ksh_man Unknown option: no-such-option
par_ksh_man exit value 255 should be 255
par_ksh_funky
par_ksh_funky \\\\\\\\
par_ksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_ksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_ksh_funky space 6
par_ksh_funky space 6
par_ksh_funky ' '
par_ksh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_ksh_funky 3 arg alias_works
par_ksh_funky 3 arg alias_works_over_ssh
par_ksh_funky Funky-
par_ksh_funky Funky-
par_ksh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_ksh_funky assoc_val_a
par_ksh_funky assoc_val_a
par_ksh_funky function_works
@ -1125,15 +1130,15 @@ par_fish_underscore aliases and arrays in functions work
par_fish_underscore aliases functions work
par_fish_underscore aliases functions work
par_fish_underscore ^
par_fish_underscore in function 'myfunc'
par_fish_underscore in function <EFBFBD>騦yfunc<EFBFBD><EFBFBD>
par_fish_underscore called on standard input
par_fish_underscore with parameter list 'work'
par_fish_underscore with parameter list <EFBFBD>菏ork<EFBFBD><EFBFBD>
par_fish_underscore
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
par_fish_underscore ^
par_fish_underscore in function 'myfunc'
par_fish_underscore in function <EFBFBD>騦yfunc<EFBFBD><EFBFBD>
par_fish_underscore called on standard input
par_fish_underscore with parameter list 'work'
par_fish_underscore with parameter list <EFBFBD>菏ork<EFBFBD><EFBFBD>
par_fish_underscore
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
par_fish_underscore ^
@ -1218,12 +1223,14 @@ par_fish_funky
par_fish_funky
par_fish_funky
par_fish_funky
par_fish_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_fish_funky '   !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_fish_environment_too_big Not implemented
par_fish_env_parallel_session Not implemented
par_fish_env_parallel bug #50435: Remote fifo broke in 20150522
par_fish_env_parallel data from stdin
par_fish_env_parallel OK
par_fish_env_parallel TODO fix env_parallel --fifo
par_fish_env_parallel 'end' outside of a block
par_fish_env_parallel fish: end
par_fish_env_parallel ^
par_fish_env_parallel data from stdin
par_fish_env_parallel OK
par_fish_env_parallel $? is not the exit status. In fish, please use $status.
@ -1306,10 +1313,10 @@ par_dash_man exit value 2 should be 2
par_dash_man Unknown option: no-such-option
par_dash_man exit value 255 should be 255
par_dash_funky
par_dash_funky ' '
par_dash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_dash_funky 3 arg alias_works
par_dash_funky 3 arg alias_works_over_ssh
par_dash_funky \\\\\\\\
par_dash_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_dash_environment_too_big bug #50815: env_parallel should warn if the environment is too big
par_dash_environment_too_big OK_bigvar
par_dash_environment_too_big OK_bigvar_remote
@ -1623,21 +1630,21 @@ par_bash_man exit value 2 should be 2
par_bash_man Unknown option: no-such-option
par_bash_man exit value 255 should be 255
par_bash_funky
par_bash_funky \\\\\\\\
par_bash_funky 
par_bash_funky 
par_bash_funky -funkymultiline
par_bash_funky -funkymultiline
par_bash_funky space 6
par_bash_funky space 6
par_bash_funky ' '
par_bash_funky ' '
par_bash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_bash_funky 3 arg alias_works
par_bash_funky 3 arg alias_works_over_ssh
par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyline
par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyline
par_bash_funky Funkymultiline-
par_bash_funky Funkymultiline-
par_bash_funky \ \ 
par_bash_funky \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_bash_funky assoc_val_a
par_bash_funky assoc_val_a
par_bash_funky function_works
@ -1848,10 +1855,10 @@ par_ash_man exit value 2 should be 2
par_ash_man Unknown option: no-such-option
par_ash_man exit value 255 should be 255
par_ash_funky
par_ash_funky ' '
par_ash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹜ㄓ它夾帚型陋秣捲陷絮溢劃遞蝨螃謝藥齪ヌ圴佮迓玿旂衲欶趹欹詘棰葮摵蜠樉賥濋錎膼瀔嚦黀蘜蠲╭帉爎<E5B889>'
par_ash_funky 3 arg alias_works
par_ash_funky 3 arg alias_works_over_ssh
par_ash_funky \\\\\\\\
par_ash_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~€乗俓僜刓匼哱嘰圽塡奬媆孿峔嶾廫怽慭抃揬擻昞朶梊榎橽歕沑淺漒瀄焅燶<E78485><E787B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>猏玕琝璡甛痋癨盶瞈砛碶礬禱穃竆筡篭籠糪絓綷縗繺羂耚肻腬臷芢荺萛蒤蔦薥蘚蚛蝄蟎衆裓襖覾診誠謀譢豛賊赲踈躙輁轡運郳醆鈂鉢鋅錦鎈鏫鑌閈闬隲靄韁頫颸餦馶騖骪鬨鮘鯸鱘鳿鵟鶿鸤黒齖㘎<E9BD96>
par_ash_environment_too_big bug #50815: env_parallel should warn if the environment is too big
par_ash_environment_too_big OK_bigvar
par_ash_environment_too_big OK_bigvar_remote

View file

@ -1,5 +1,5 @@
par_PARALLEL_RSYNC_OPTS ### test rsync opts
par_PARALLEL_RSYNC_OPTS rsync --protocol 30 -rlDzRRRRrsync --protocol 30 --rsync-path=cd\ ././.\;\ rsync -rlDzRRRRrsync --protocol 30 -zzrrllddRRRRrsync --protocol 30 --rsync-path=cd\ ././.\;\ rsync -zzrrllddRRRR
par_PARALLEL_RSYNC_OPTS rsync --protocol 30 -rlDzRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzRRRRrsync --protocol 30 -zzrrllddRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -zzrrllddRRRR
par_bar_m ### test --bar -m
par_bar_m 0
par_bar_m 50

View file

@ -195,8 +195,8 @@ a_b_c_d
echo '### Test of --trim n'
### Test of --trim n
(echo 'a% c %%b'; echo a%c% b %d) | parallel -k --trim n --colsep %+ echo '"{1}_{3}_{2}_{4}"'
a_b_\ c\ _
a_\ b\ _c_d
a_b_' c '_
a_' b '_c_d
parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d'
a_b_c_
a_b_c_d

View file

@ -1,8 +1,8 @@
04f23d767b301409aac59a612efcd727 -
c17a7b2d20f81d751aa627d6ba14dcc9 -
There are 6246 dirs with 6246 files
Removing files
643fe9e7808976565b33a6fbc932428b -
4599cfc9b33244e96b7bf5b4f40e73ea -
There are 6246 dirs with files
Removing dirs
7d89b0dc655b91f358a5cee5f4b2d1d7 -
28030a604f2e7381b234bbff3b13be9d -
There are 1 dirs with files

View file

@ -89,7 +89,7 @@ from one to xoney
xargs: argument list too long
stdsort parallel -k -i -s26 -0 echo from \{\} to x{}y < items-0.xi
parallel: Error: Command line too long (42 >= 26) at input 0:
parallel: Error: Command line too long (32 >= 26) at input 0:
echo '### -l -0 echo < ldata-0.xi'
### -l -0 echo < ldata-0.xi
stdout xargs -l -0 echo < ldata-0.xi
@ -449,7 +449,7 @@ this plus that
stdout parallel -k -t -0 echo this plus that < space.xi
echo this plus that '
'\ \ \ \ \ '
'
this plus that
@ -1212,7 +1212,7 @@ stdsort xargs -i -s26 echo from \{\} to x{}y < items.xi
from dumb to xdumby
xargs: argument list too long
stdsort parallel -k -i -s26 echo from \{\} to x{}y < items.xi
parallel: Error: Command line too long (36 >= 26) at input 0:
parallel: Error: Command line too long (30 >= 26) at input 0:
echo '### -i__ echo FIRST __ IS OK < quotes.xi'
### -i__ echo FIRST __ IS OK < quotes.xi
stdout xargs -i__ echo FIRST __ IS OK < quotes.xi
@ -1344,7 +1344,7 @@ echo this plus that
this plus that
stdout parallel -k -t echo this plus that < space.xi
echo this plus that ''
echo this plus that \ \ \ \ \
echo this plus that ' '
this plus that
this plus that
echo '### -n1 printf "@%s@\n" < empty.xi'
@ -1366,7 +1366,7 @@ foo bar
echo baz ugh
baz ugh
stdout parallel -k -n2 -t echo < foobar.xi
echo foo\ bar baz\
echo 'foo bar' 'baz '
echo ugh
foo bar baz
ugh

View file

@ -41,13 +41,13 @@ ls b
a
a b
b
ls ' ab '|wc;echo ' ab '
ls ' ab'|wc;echo ' ab'
ls 'a b'|wc;echo 'a b'
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
ls 1-col.txt|wc;echo 1-col.txt
ls 2-col.txt.diff|wc;echo 2-col.txt.diff
ls 2-col.txt|wc;echo 2-col.txt
ls \ ab\ |wc;echo \ ab\
ls \ ab|wc;echo \ ab
ls a\ b|wc;echo a\ b
ls a|wc;echo a
ls b|wc;echo b
### Check that we can have more input than max procs (-j 0) - touch
@ -62,7 +62,7 @@ touch more_than_5000-9997
touch more_than_5000-9998
touch more_than_5000-9999
### rm
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
@ -171,7 +171,7 @@ ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"
4 ab
4 b
6 a
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
@ -318,24 +318,24 @@ find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARG
./a/bar.diff
./b/bar.diff
./b/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo
@ -477,124 +477,124 @@ find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\
./a/bar.diff
./b/bar.diff
./b/bar.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo.diff
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9901
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9902
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9903
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9904
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9905
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9906
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9907
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9908
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9909
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9910
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9911
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9912
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9913
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9914
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9915
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9916
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9917
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9918
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9919
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9920
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9921
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9922
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9923
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9924
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9925
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9926
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9927
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9928
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9929
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9930
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9931
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9932
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9933
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9934
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9935
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9936
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9937
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9938
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9939
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9940
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9941
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9942
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9943
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9944
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9945
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9946
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9947
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9948
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9949
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9950
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9951
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9952
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9953
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9954
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9955
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9956
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9957
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9958
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9959
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9960
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9961
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9962
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9963
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9964
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9965
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9966
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9967
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9968
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9969
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9970
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9971
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9972
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9973
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9974
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9975
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9976
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9977
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9978
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9979
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9980
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9981
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9982
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9983
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9984
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9985
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9986
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9987
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9988
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9989
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9990
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9991
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9992
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9993
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9994
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9995
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9996
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9997
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9998
perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9999
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg.diff'
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9901
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9902
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9903
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9904
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9905
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9906
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9907
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9908
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9909
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9910
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9911
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9912
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9913
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9914
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9915
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9916
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9917
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9918
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9919
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9920
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9921
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9922
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9923
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9924
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9925
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9926
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9927
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9928
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9929
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9930
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9931
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9932
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9933
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9934
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9935
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9936
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9937
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9938
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9939
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9940
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9941
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9942
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9943
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9944
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9945
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9946
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9947
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9948
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9949
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9950
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9951
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9952
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9953
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9954
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9955
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9956
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9957
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9958
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9959
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9960
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9961
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9962
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9963
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9964
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9965
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9966
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9967
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9968
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9969
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9970
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9971
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9972
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9973
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9974
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9975
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9976
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9977
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9978
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9979
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9980
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9981
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9982
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9983
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9984
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9985
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9986
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9987
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9988
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9989
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9990
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9991
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9992
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9993
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9994
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9995
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9996
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9997
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9998
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9999

View file

@ -210,13 +210,13 @@ echo '### Bug made 3 go before 1 2'
echo '### Bug did not quote'
### Bug did not quote
echo '>' | parallel -v echo
echo \>
echo '>'
>
parallel -v echo ::: '>'
echo \>
echo '>'
>
(echo '>'; echo 2) | parallel -j1 -vX echo
echo \> 2
echo '>' 2
> 2
parallel -X -j1 echo ::: '>' 2
> 2

View file

@ -317,5 +317,5 @@ ls: cannot access '*.par': No such file or directory
echo "bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'"
bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'
export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK'
echo space\ in\ envvar\ OK
echo 'space in envvar OK'
space in envvar OK

View file

@ -41,5 +41,5 @@ par_space_quote a \'"b 4
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][\!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][!#¤%=( ) | }b 5
par_special_char a' * ? >o <i*? ][!#¤%=( ) | }b 5

View file

@ -20,7 +20,7 @@ a
ls b|wc;echo b
4 4 26
b
ls \ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)|wc;echo \ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)
ls '中国 (Zhōngguó)'|wc;echo '中国 (Zhōngguó)'
4 12 118
中国 (Zhōngguó)
1 1-col.diff
@ -29,14 +29,14 @@ ls \
1 2-col.txt
6 a
4 b
4 中国 (ZhÅ<68>ngguó)
4 '中国 (Zhōngguó)'
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 中国 (ZhÅ<68>ngguó)
4 '中国 (Zhōngguó)'
touch -- 1-col/abc-1-col-1-col
touch -- 1-col/abc-1-col-1-col.diff
touch -- 1-col/abc-1-col-1-col.txt
@ -45,7 +45,7 @@ touch -- 2-col/abc-2-col-2-col.diff
touch -- 2-col/abc-2-col-2-col.txt
touch -- a/abc-a-a
touch -- b/abc-b-b
touch -- \ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)/abc-\ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)-\ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)
touch -- '中国 (Zhōngguó)'/abc-'中国 (Zhōngguó)'-'中国 (Zhōngguó)'
rm -- 1-col/abc-1-col-1-col
rm -- 1-col/abc-1-col-1-col.diff
rm -- 1-col/abc-1-col-1-col.txt
@ -54,7 +54,7 @@ rm -- 2-col/abc-2-col-2-col.diff
rm -- 2-col/abc-2-col-2-col.txt
rm -- a/abc-a-a
rm -- b/abc-b-b
rm -- \ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)/abc-\ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)-\ä\¸\­\å\\½\ \(Zh\Å\<5C>nggu\Ã\³\)
rm -- '中国 (Zhōngguó)'/abc-'中国 (Zhōngguó)'-'中国 (Zhōngguó)'
echo '### Test compress'
### Test compress
seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10'

View file

@ -85,7 +85,7 @@ echo '### bug #42902: profiles containing arguments with space'
echo "--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' " > ~/.parallel/FULLPATH; parallel -JFULLPATH echo FULLPATH ::: $0
/bin/bash=/bin/bash
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0
echo /bin/bash\=/bin/bash
echo '/bin/bash=/bin/bash'
/bin/bash=/bin/bash
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: .
With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite

View file

@ -1,100 +1,58 @@
echo '### tmux-1.9'
### tmux-1.9
seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 0000 10 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 1001 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 3001 10 4000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 2000 2018 | PARALLEL_TMUX=tmux-1.9 par_tmux
seq 4001 10 4030 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux-1.9 fails'
### tmux-1.9 fails
echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4047 >= 4047) at input 0: 2019
echo 4036 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4047 >= 4047) at input 0: 4036
255
echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4049 >= 4047) at input 0: 2020
echo 4037 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4048 >= 4047) at input 0: 4037
255
echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4051 >= 4047) at input 0: 2021
echo 4038 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (4049 >= 4047) at input 0: 4038
255
echo '### tmux-1.8'
### tmux-1.8
seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 1 5 100 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 101 5 200 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux
seq 201 5 300 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 301 5 400 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
seq 401 5 460 | PARALLEL_TMUX=tmux-1.8 par_tmux
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
0
echo '### tmux-1.8 fails'
### tmux-1.8 fails
echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (472 >= 472) at input 0: 232
echo 462 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (472 >= 472) at input 0: 462
255
echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (474 >= 472) at input 0: 233
echo 463 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (473 >= 472) at input 0: 463
255
echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (476 >= 472) at input 0: 234
echo 464 | PARALLEL_TMUX=tmux-1.8 par_tmux
parallel: Error: Command line too long (474 >= 472) at input 0: 464
255
echo '### tmux-1.8 0..255 ascii'
### tmux-1.8 0..255 ascii
@ -115,7 +73,6 @@ echo '### Test critical lengths. Must not block'
### Test critical lengths. Must not block
seq 140 260 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
parallel: Error: Command line too long (472 >= 472) at input 0: 232
seq 140 260 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach
seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter

View file

@ -64,17 +64,6 @@ echo '### Test --spreadstdin -k'; nice seq 1 1000000 | $NICEPAR -k --recend "\
echo '### Test --spreadstdin --files'; nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum
### Test --spreadstdin --files
8a7095c1c23bfadc311fe6b16d950582 -
echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus
### Test --number-of-cpus
1
echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores
### Test --number-of-cores
2
echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 8 physical CPUs
cores done
CPUs done
echo '### Test --tag ::: a ::: b'; stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b
### Test --tag ::: a ::: b
a b stdout-a b
@ -313,31 +302,31 @@ b
echo '### Quote test triplet 2'
### Quote test triplet 2
$XAP -kv echo :::: <(echo 'echo a'; echo 'echo b')
echo echo\ a
echo 'echo a'
echo a
echo echo\ b
echo 'echo b'
echo b
$XAP -kv -a <(echo 'echo a'; echo 'echo b') echo
echo echo\ a
echo 'echo a'
echo a
echo echo\ b
echo 'echo b'
echo b
(echo 'echo a'; echo 'echo b') | $XAP -kv echo
echo echo\ a
echo 'echo a'
echo a
echo echo\ b
echo 'echo b'
echo b
echo '### Quoting if there is a command and 2 arg files'
### Quoting if there is a command and 2 arg files
$XAP -kv echo :::: <(echo 'echo a') <(echo 'echo b')
echo echo\ a echo\ b
echo 'echo a' 'echo b'
echo a echo b
echo '### Quoting if there is a command and 2 arg files of uneven length'
### Quoting if there is a command and 2 arg files of uneven length
$XAP -kv echo :::: <(echo 'echo a';echo a1) <(echo 'echo b')
echo echo\ a echo\ b
echo 'echo a' 'echo b'
echo a echo b
echo a1 echo\ b
echo a1 'echo b'
a1 echo b
echo '### Quoting if there is no command and 2 arg files'
### Quoting if there is no command and 2 arg files