Released as 20180122 ('Mayon')

This commit is contained in:
Ole Tange 2018-01-22 17:23:23 +01:00
parent 2d3989d36b
commit b597f4166f
29 changed files with 408 additions and 346 deletions

13
NEWS
View file

@ -1,3 +1,16 @@
20180122
* bash / 병렬 https://code.i-harness.com/ko/docs/bash/2a1a
* 15分钟神器gnu parallel 入门观止
http://www.ezilin.com/2018/01/15gnu-parallel.html
* How To Run Multiple Commands In Parallel on Linux
https://www.slashroot.in/how-run-multiple-commands-parallel-linux
* Bug fixes and man page updates.
20171222
* env_parset for ash, dash, ksh, sh, zsh

14
README
View file

@ -44,9 +44,9 @@ document.
Full installation of GNU Parallel is as simple as:
wget http://ftpmirror.gnu.org/parallel/parallel-20171222.tar.bz2
bzip2 -dc parallel-20171222.tar.bz2 | tar xvf -
cd parallel-20171222
wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2
bzip2 -dc parallel-20180122.tar.bz2 | tar xvf -
cd parallel-20180122
./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 http://ftpmirror.gnu.org/parallel/parallel-20171222.tar.bz2
bzip2 -dc parallel-20171222.tar.bz2 | tar xvf -
cd parallel-20171222
wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2
bzip2 -dc parallel-20180122.tar.bz2 | tar xvf -
cd parallel-20180122
./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel
@ -69,7 +69,7 @@ src/sem src/niceload src/sql to a dir in your path.
If you just need parallel and do not have 'make' installed (maybe the
system is old or Microsoft Windows):
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
wget https://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
mv parallel sem dir-in-your-$PATH/bin/

5
bootstrap Executable file
View file

@ -0,0 +1,5 @@
#!/bin/bash
# I always forget how to make ./configure
autoreconf --install -W gnu

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for parallel 20171222.
# Generated by GNU Autoconf 2.69 for parallel 20180122.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20171222'
PACKAGE_STRING='parallel 20171222'
PACKAGE_VERSION='20180122'
PACKAGE_STRING='parallel 20180122'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20171222 to adapt to many kinds of systems.
\`configure' configures parallel 20180122 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20171222:";;
short | recursive ) echo "Configuration of parallel 20180122:";;
esac
cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20171222
parallel configure 20180122
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20171222, which was
It was created by parallel $as_me 20180122, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20171222'
VERSION='20180122'
cat >>confdefs.h <<_ACEOF
@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20171222, which was
This file was extended by parallel $as_me 20180122, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20171222
parallel config.status 20180122
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

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

View file

@ -199,19 +199,24 @@ to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20171222 ('Jerusalem/Agung/Bir al-Abed') released <<[stable]>>
Subject: GNU Parallel 20180122 ('Mayon') released <<[stable]>>
GNU Parallel 20171222 ('Jerusalem/Agung/Bir al-Abed') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20180122 ('Mayon') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>>
Haiku of the month:
<<>>
Quote of the month:
GNU Parallel is making me pretty happy this morning
-- satanpenguin
New in this release:
* bash / 병렬 https://code.i-harness.com/ko/docs/bash/2a1a
* 15分钟神器gnu parallel 入门观止 http://www.ezilin.com/2018/01/15gnu-parallel.html
* How To Run Multiple Commands In Parallel on Linux https://www.slashroot.in/how-run-multiple-commands-parallel-linux
<<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

@ -1,6 +1,6 @@
<directory name="parallel" rev="214" srcmd5="2516655d54c763928fd9f97014e11540" vrev="1">
<entry md5="8b44ef3f5aac2302f976cb58cf61fe87" mtime="1513986752" name="parallel-20171222.tar.bz2" size="1690096" />
<entry md5="5f4277facf3f4777b0cea688027954a3" mtime="1513986752" name="parallel.spec" size="4693" />
<entry md5="ca877325712ba2d1f5906548427de534" mtime="1513986752" name="parallel_20171222.dsc" size="556" />
<entry md5="21420e5e8a3c415584438286cb2cdcaf" mtime="1513986753" name="parallel_20171222.tar.gz" size="1894418" />
<directory name="parallel" rev="216" srcmd5="8f7a185b24d9bbf7d205810dc0400fc3" vrev="2">
<entry md5="dc3c49472f24afa64146433955e3c60c" mtime="1516637654" name="parallel-20180122.tar.bz2" size="1717898" />
<entry md5="09b2f07b64cc64aef10f459b57fe8e25" mtime="1516624602" name="parallel.spec" size="4693" />
<entry md5="e429add03e21bbe237a9cd03249acb13" mtime="1516637656" name="parallel_20180122.dsc" size="556" />
<entry md5="cd809eb297ee7fb8821786b6a814090c" mtime="1516637670" name="parallel_20180122.tar.gz" size="1904981" />
</directory>

View file

@ -1,6 +1,6 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20171222
Version: 20180122
Release: 1.2
License: GPL
Group: Productivity/File utilities

View file

@ -1,6 +1,6 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20171222
Version: 20180122
Release: 1.2
License: GPL
Group: Productivity/File utilities

View file

@ -59,7 +59,7 @@ env_parallel() {
}
_names_of_VARIABLES() {
# This may screw up if variables contain \n and =
set | perl -ne 's/^(\S+)=.*/$1/ and print;'
set | perl -ne 's/^(\S+?)=.*/$1/ and print;'
}
_bodies_of_VARIABLES() {
# Crappy typeset -p
@ -73,11 +73,16 @@ env_parallel() {
}
_remove_bad_NAMES() {
# Do not transfer vars and funcs from env_parallel
grep -Ev '^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$' |
# Some versions of grep do not support -E: Use perl
# grep -Ev '^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$' |
perl -ne '/^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$/ and next;
# Filter names matching --env
grep -E "^$_grep_REGEXP"\$ | grep -vE "^$_ignore_UNDERSCORE"\$ |
/^'"$_grep_REGEXP"'$/ or next;
/^'"$_ignore_UNDERSCORE"'$/ and next;
# Vars set by /bin/sh
grep -Ev '^(_)$'
/^(_|TIMEOUT)$/ and next;
print;'
}
_get_ignored_VARS() {
@ -116,14 +121,18 @@ env_parallel() {
}
_which() {
# type returns:
# ll is an alias for ls -l (in ash)
# bash is a tracked alias for /bin/bash
# true is a shell builtin
# which is /usr/bin/which
# which is hashed (/usr/bin/which)
# aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
# Return 0 if found, 1 otherwise
type "$@" |
perl -pe '$exit += (s/ aliased to .*// ||
perl -pe '$exit += (s/ is an alias for .*// ||
s/ is aliased to .*// ||
s/ is a shell builtin// ||
s/.* is hashed .(\S+).$/$1/ ||
s/.* is (a tracked alias for )?//);
END { exit not $exit }'
}
@ -184,6 +193,7 @@ env_parallel() {
$_list_function_BODIES;
$_list_variable_VALUES;
`"
export PARALLEL_ENV
unset _list_alias_BODIES
unset _list_variable_VALUES
@ -256,8 +266,8 @@ _parset_main() {
}
exit $exitval;
' || return 255
if echo "$_parset_name" | grep -E ',| ' >/dev/null ; then
# $1 contains , or space
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
# Split on , or space to get the names
eval "$(
# Compute results into files
@ -270,9 +280,9 @@ _parset_main() {
)
)"
else
# $1 contains no space or ,
# => $1 is the name of the array to put data into
# Supported in: bash
# $_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
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"

View file

@ -59,7 +59,7 @@ env_parallel() {
}
_names_of_VARIABLES() {
# This may screw up if variables contain \n and =
set | perl -ne 's/^(\S+)=.*/$1/ and print;'
set | perl -ne 's/^(\S+?)=.*/$1/ and print;'
}
_bodies_of_VARIABLES() {
# Crappy typeset -p
@ -73,11 +73,16 @@ env_parallel() {
}
_remove_bad_NAMES() {
# Do not transfer vars and funcs from env_parallel
grep -Ev '^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$' |
# Some versions of grep do not support -E: Use perl
# grep -Ev '^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$' |
perl -ne '/^(_names_of_ALIASES|_bodies_of_ALIASES|_names_of_maybe_FUNCTIONS|_names_of_FUNCTIONS|_bodies_of_FUNCTIONS|_names_of_VARIABLES|_bodies_of_VARIABLES|_remove_bad_NAMES|_prefix_PARALLEL_ENV|_get_ignored_VARS|_make_grep_REGEXP|_ignore_UNDERSCORE|_alias_NAMES|_list_alias_BODIES|_function_NAMES|_list_function_BODIES|_variable_NAMES|_list_variable_VALUES|_prefix_PARALLEL_ENV|PARALLEL_TMP)$/ and next;
# Filter names matching --env
grep -E "^$_grep_REGEXP"\$ | grep -vE "^$_ignore_UNDERSCORE"\$ |
/^'"$_grep_REGEXP"'$/ or next;
/^'"$_ignore_UNDERSCORE"'$/ and next;
# Vars set by /bin/sh
grep -Ev '^(_)$'
/^(_|TIMEOUT)$/ and next;
print;'
}
_get_ignored_VARS() {
@ -116,14 +121,18 @@ env_parallel() {
}
_which() {
# type returns:
# ll is an alias for ls -l (in ash)
# bash is a tracked alias for /bin/bash
# true is a shell builtin
# which is /usr/bin/which
# which is hashed (/usr/bin/which)
# aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
# Return 0 if found, 1 otherwise
type "$@" |
perl -pe '$exit += (s/ aliased to .*// ||
perl -pe '$exit += (s/ is an alias for .*// ||
s/ is aliased to .*// ||
s/ is a shell builtin// ||
s/.* is hashed .(\S+).$/$1/ ||
s/.* is (a tracked alias for )?//);
END { exit not $exit }'
}
@ -184,6 +193,7 @@ env_parallel() {
$_list_function_BODIES;
$_list_variable_VALUES;
`"
export PARALLEL_ENV
unset _list_alias_BODIES
unset _list_variable_VALUES
@ -256,8 +266,8 @@ _parset_main() {
}
exit $exitval;
' || return 255
if echo "$_parset_name" | grep -E ',| ' >/dev/null ; then
# $1 contains , or space
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
# Split on , or space to get the names
eval "$(
# Compute results into files
@ -270,9 +280,9 @@ _parset_main() {
)
)"
else
# $1 contains no space or ,
# => $1 is the name of the array to put data into
# Supported in: bash
# $_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
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"

View file

@ -59,7 +59,7 @@ env_parallel() {
}
_names_of_VARIABLES() {
# This may screw up if variables contain \n and =
set | perl -ne 's/^(\S+)=.*/$1/ and print;'
set | perl -ne 's/^(\S+?)=.*/$1/ and print;'
}
_bodies_of_VARIABLES() {
# Crappy typeset -p
@ -121,6 +121,7 @@ env_parallel() {
}
_which() {
# type returns:
# ll is an alias for ls -l (in ash)
# bash is a tracked alias for /bin/bash
# true is a shell builtin
# which is /usr/bin/which
@ -128,7 +129,8 @@ env_parallel() {
# aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
# Return 0 if found, 1 otherwise
type "$@" |
perl -pe '$exit += (s/ is aliased to .*// ||
perl -pe '$exit += (s/ is an alias for .*// ||
s/ is aliased to .*// ||
s/ is a shell builtin// ||
s/.* is hashed .(\S+).$/$1/ ||
s/.* is (a tracked alias for )?//);

View file

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

View file

@ -96,9 +96,6 @@ if($opt::nonall or $opt::onall) {
wait_and_exit(min(undef_as_zero($Global::exitstatus),254));
}
# TODO --transfer foo/./bar --cleanup
# multiple --transfer and --basefile with different /./
$Global::JobQueue = JobQueue->new(
\@command,\@input_source_fh,$Global::ContextReplace,
$number_of_args,\@Global::transfer_files,\@Global::ret_files);
@ -1391,7 +1388,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20180107;
$Global::version = 20180122;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;

View file

@ -431,9 +431,9 @@ It is compatible with B<zenity>:
=item B<--bf> I<file>
I<file> will be transferred to each sshlogin before a jobs is
I<file> will be transferred to each sshlogin before a job is
started. It will be removed if B<--cleanup> is active. The file may be
a script to run or some common base data needed for the jobs.
a script to run or some common base data needed for the job.
Multiple B<--bf> can be specified to transfer more basefiles. The
I<file> will be transferred the same way as B<--transferfile>.
@ -732,7 +732,7 @@ may not be used. B<--gnu> is kept for compatibility.
=item B<--group>
Group output. Output from each jobs is grouped together and is only
Group output. Output from each job is grouped together and is only
printed when the command is finished. stdout (standard output) first
followed by stderr (standard error).
@ -3606,7 +3606,7 @@ To run the command B<uptime> on remote computers you can do:
parallel --tag --nonall -S server1,server2 uptime
B<--nonall> reads no arguments. If you have a list of jobs you want
run on each computer you can do:
to run on each computer you can do:
parallel --tag --onall -S server1,server2 echo ::: 1 2 3

View file

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

View file

@ -81,7 +81,7 @@ par__memleak() {
par_slow_total_jobs() {
echo 'bug #51006: Slow total_jobs() eats job'
(echo a; sleep 15; echo b; sleep 15; seq 2) |
parallel -k echo '{=total_jobs()=}'
parallel -k echo '{=total_jobs()=}' 2> >(perl -pe 's/\d/X/g')
}
par_interactive() {

View file

@ -4,6 +4,36 @@
# Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_resume_failed_k() {
echo '### bug #38299: --resume-failed -k'
tmp=$(tempfile)
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo try 2. Gives failing - not 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
echo with exit 0
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1
echo try 2 again. Gives empty
parallel -k --resume-failed --joblog $tmp echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1
rm $tmp
}
par_resume_k() {
echo '### --resume -k'
tmp=$(tempfile)
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
echo try 2 = nothing
parallel -k --resume --joblog $tmp echo job{}id\;exit {} ::: 0 1 2 3 0 5
echo two extra
parallel -k --resume --joblog $tmp echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7
rm -f $tmp
}
par_pipe_unneeded_procs() {
echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o 2> >(grep -Ev 'Warning: Starting|Warning: Consider')
}
par_results_arg_256() {
echo '### bug #42089: --results with arg > 256 chars (should be 1 char shorter)'
parallel --results parallel_test_dir echo ::: 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456;
@ -167,7 +197,7 @@ par_parcat_mixing() {
slow_output() {
string=$1
perl -e 'print "'$string'"x9000,"start\n"'
sleep 3
sleep 4
perl -e 'print "'$string'"x9000,"end\n"'
}
tmp1=$(mktmpfifo)

View file

@ -16,28 +16,28 @@ par_ash_man() {
. `which env_parallel.ash`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
alias multiline="dummy"
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
multivar='multiline
variables'
variables with = & "'
env_parallel echo '"$multivar"' ::: work
env_parallel -S server echo '"$multivar"' ::: work
env_parallel --env multivar echo '"$multivar"' ::: work
@ -61,14 +61,14 @@ par_bash_man() {
. `which env_parallel.bash`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel 'multiline {};
echo but only when followed by a newline' ::: work
env_parallel -S server 'multiline {};
@ -79,30 +79,30 @@ par_bash_man() {
echo but only when followed by a newline' ::: work
alias multiline="dummy"
myfunc() { echo functions $*; }
myfunc() { echo functions 'with = & "' $*; }
env_parallel myfunc ::: work
env_parallel -S server myfunc ::: work
env_parallel --env myfunc myfunc ::: work
env_parallel --env myfunc -S server myfunc ::: work
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
multivar='multiline
variables'
variables with = & "'
env_parallel echo '"$multivar"' ::: work
env_parallel -S server echo '"$multivar"' ::: work
env_parallel --env multivar echo '"$multivar"' ::: work
env_parallel --env multivar -S server echo '"$multivar"' ::: work
myarray=(arrays work, too)
env_parallel -k echo '${myarray[{}]}' ::: 0 1 2
env_parallel -k -S server echo '${myarray[{}]}' ::: 0 1 2
env_parallel -k --env myarray echo '${myarray[{}]}' ::: 0 1 2
env_parallel -k --env myarray -S server echo '${myarray[{}]}' ::: 0 1 2
myarray=(arrays 'with = & "' work, too)
env_parallel -k echo '${myarray[{}]}' ::: 0 1 2 3
env_parallel -k -S server echo '${myarray[{}]}' ::: 0 1 2 3
env_parallel -k --env myarray echo '${myarray[{}]}' ::: 0 1 2 3
env_parallel -k --env myarray -S server echo '${myarray[{}]}' ::: 0 1 2 3
env_parallel ::: true false true false
echo exit value $? should be 2
@ -122,7 +122,7 @@ par_csh_man() {
# source `which env_parallel.csh`;
alias myecho 'echo aliases'
alias myecho 'echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
@ -130,17 +130,18 @@ par_csh_man() {
# Functions not supported
set myvar=variables
set myvar='variables with \= \& \"'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
set myarray=(arrays work, too)
env_parallel -k echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k -S server echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3
# TODO this is not fixed
set myarray=(arrays with\ \=\ \&\ \" work, too)
env_parallel -k echo \$'{myarray[{}]}' ::: 1 2 3 4
env_parallel -k -S server echo \$'{myarray[{}]}' ::: 1 2 3 4
env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3 4
env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3 4
env_parallel ::: true false true false
echo exit value $status should be 2
@ -161,28 +162,28 @@ par_dash_man() {
. `which env_parallel.dash`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
alias multiline="dummy"
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
multivar='multiline
variables'
variables with = & "'
env_parallel echo '"$multivar"' ::: work
env_parallel -S server echo '"$multivar"' ::: work
env_parallel --env multivar echo '"$multivar"' ::: work
@ -203,31 +204,31 @@ par_fish_man() {
myscript=$(cat <<'_EOF'
echo "### From man env_parallel"
alias myecho 'echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
function myfunc
echo functions $argv
echo functions with \= \& \" $argv
end
env_parallel myfunc ::: work
env_parallel -S server myfunc ::: work
env_parallel --env myfunc myfunc ::: work
env_parallel --env myfunc -S server myfunc ::: work
set myvar variables
set myvar 'variables = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
set myarray arrays work, too
env_parallel -k echo '$myarray[{}]' ::: 1 2 3
env_parallel -k -S server echo '$myarray[{}]' ::: 1 2 3
env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3
env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3
set myarray arrays 'with = & "' work, too
env_parallel -k echo '$myarray[{}]' ::: 1 2 3 4
env_parallel -k -S server echo '$myarray[{}]' ::: 1 2 3 4
env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3 4
env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3 4
env_parallel ::: true false true false
echo exit value $status should be 2
@ -246,33 +247,33 @@ par_ksh_man() {
. `which env_parallel.ksh`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
alias multiline='dummy'
myfunc() { echo functions $*; }
myfunc() { echo functions 'with = & "' $*; }
env_parallel myfunc ::: work
env_parallel -S server myfunc ::: work
env_parallel --env myfunc myfunc ::: work
env_parallel --env myfunc -S server myfunc ::: work
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
myarray=(arrays work, too)
myarray=(arrays 'with = & "' work, too)
env_parallel -k echo '${myarray[{}]}' ::: 0 1 2
env_parallel -k -S server echo '${myarray[{}]}' ::: 0 1 2
env_parallel -k --env myarray echo '${myarray[{}]}' ::: 0 1 2
@ -296,28 +297,28 @@ par_sh_man() {
. `which env_parallel.sh`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
alias multiline="dummy"
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
multivar='multiline
variables'
variables with = & "'
env_parallel echo '"$multivar"' ::: work
env_parallel -S server echo '"$multivar"' ::: work
env_parallel --env multivar echo '"$multivar"' ::: work
@ -340,7 +341,7 @@ par_tcsh_man() {
# source `which env_parallel.tcsh`
alias myecho 'echo aliases'
alias myecho 'echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
@ -348,13 +349,14 @@ par_tcsh_man() {
echo Functions not supported
set myvar=variables
set myvar='variables with \= \& \"'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
set myarray=(arrays work, too)
# TODO this is not fixed
set myarray=(arrays with\ \=\ \&\ \" work, too)
env_parallel -k echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k -S server echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3
@ -377,36 +379,36 @@ par_zsh_man() {
. `which env_parallel.zsh`;
alias myecho='echo aliases'
alias myecho='echo aliases with \= \& \"'
env_parallel myecho ::: work
env_parallel -S server myecho ::: work
env_parallel --env myecho myecho ::: work
env_parallel --env myecho -S server myecho ::: work
alias multiline='echo multiline
echo aliases'
echo aliases with \= \& \"'
env_parallel multiline ::: work
env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work
env_parallel --env multiline -S server multiline ::: work
myfunc() { echo functions $*; }
myfunc() { echo functions 'with = & "' $*; }
env_parallel myfunc ::: work
env_parallel -S server myfunc ::: work
env_parallel --env myfunc myfunc ::: work
env_parallel --env myfunc -S server myfunc ::: work
myvar=variables
myvar='variables with = & "'
env_parallel echo '$myvar' ::: work
env_parallel -S server echo '$myvar' ::: work
env_parallel --env myvar echo '$myvar' ::: work
env_parallel --env myvar -S server echo '$myvar' ::: work
myarray=(arrays work, too)
env_parallel -k echo '${myarray[{}]}' ::: 1 2 3
env_parallel -k -S server echo '${myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray echo '${myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray -S server echo '${myarray[{}]}' ::: 1 2 3
myarray=(arrays 'with = & "' work, too)
env_parallel -k echo '${myarray[{}]}' ::: 1 2 3 4
env_parallel -k -S server echo '${myarray[{}]}' ::: 1 2 3 4
env_parallel -k --env myarray echo '${myarray[{}]}' ::: 1 2 3 4
env_parallel -k --env myarray -S server echo '${myarray[{}]}' ::: 1 2 3 4
env_parallel ::: true false true false
echo exit value $? should be 2

View file

@ -7,7 +7,7 @@ par_path_remote_bash() {
rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|\s*^$' | uniq
cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'For upgrade information, please visit:|updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|\s*^$' | uniq
echo BASH Path before: $PATH with no parallel
parallel echo ::: 1
# Race condition stderr/stdout
@ -28,7 +28,7 @@ par_path_remote_csh() {
rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|\s*^$' | uniq
cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'For upgrade information, please visit:|updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|\s*^$' | uniq
echo CSH Path before: $PATH with no parallel
which parallel >& /dev/stdout
echo '^^^^^^^^ Not found is OK'

View file

@ -108,9 +108,6 @@ echo '### Test of --trim n'
echo '### Test of bug: If input is empty string'
(echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2}
echo '### Test bug #34241: --pipe should not spawn unneeded processes'
seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o
echo '### Test :::: mixed with :::'
echo '### Test :::: < ::: :::'
parallel -k echo {1} {2} {3} :::: <(seq 6 7) ::: 4 5 ::: 1 2 3

View file

@ -14,26 +14,6 @@ seq 9 | /usr/bin/time -f %e parallel -j3 --delay 0.57 true {} 2>&1 |
echo '### test --sshdelay'
stdout /usr/bin/time -f %e parallel -j0 --sshdelay 0.5 -S localhost true ::: 1 2 3 | perl -ne 'print($_ > 1.30 ? "OK\n" : "Not OK\n")'
echo '### bug #38299: --resume-failed -k'
rm -f /tmp/joblog-38299;
parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1;
echo try 2. Gives failing - not 0;
parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1;
echo with exit 0;
parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1;
echo try 2 again. Gives empty;
parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1;
rm /tmp/joblog-38299
echo '### --resume -k'
rm -f /tmp/joblog-resume;
parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit {} ::: 0 1 2 3 0 5;
echo try 2 = nothing;
parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit {} ::: 0 1 2 3 0 5;
echo two extra;
parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7;
rm -f /tmp/joblog-resume
echo "bug #37694: Empty string argument skipped when using --quote"
parallel -q --nonall perl -le 'print scalar @ARGV' 'a' 'b' ''

View file

@ -511,11 +511,11 @@ par_results_csv ",
par_round_robin_blocks bug #49664: --round-robin does not complete
par_round_robin_blocks 8
par_slow_total_jobs bug #51006: Slow total_jobs() eats job
par_slow_total_jobs parallel: Warning: Reading 2 arguments took longer than 10 seconds.
par_slow_total_jobs a
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_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

@ -57,6 +57,11 @@ par_parcat_mixing astart
par_parcat_mixing bstart
par_parcat_mixing aend
par_parcat_mixing bend
par_pipe_unneeded_procs ### Test bug #34241: --pipe should not spawn unneeded processes
par_pipe_unneeded_procs 1
par_pipe_unneeded_procs 2
par_pipe_unneeded_procs 3
par_pipe_unneeded_procs o
par_pipepart_block ### --pipepart --block -# (# < 0)
par_pipepart_block 1
par_pipepart_block 2
@ -107,6 +112,35 @@ par_pipepart_block 20-20
par_results_arg_256 ### bug #42089: --results with arg > 256 chars (should be 1 char shorter)
par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
par_results_arg_256 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
par_resume_failed_k ### bug #38299: --resume-failed -k
par_resume_failed_k job1 val 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job5 val 0
par_resume_failed_k job6 val 1
par_resume_failed_k try 2. Gives failing - not 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job6 val 1
par_resume_failed_k with exit 0
par_resume_failed_k job2 val 1
par_resume_failed_k job3 val 2
par_resume_failed_k job4 val 3
par_resume_failed_k job6 val 1
par_resume_failed_k try 2 again. Gives empty
par_resume_k ### --resume -k
par_resume_k job0id
par_resume_k job1id
par_resume_k job2id
par_resume_k job3id
par_resume_k job0id
par_resume_k job5id
par_resume_k try 2 = nothing
par_resume_k two extra
par_resume_k job6id
par_resume_k job7id
par_slow_args_generation ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834
par_slow_args_generation 1
par_slow_args_generation 2

View file

@ -68,36 +68,40 @@ par_zsh_parset myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun ba
par_zsh_parset myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun bar myecho myvar myarr 0 myfun baz
par_zsh_man ### zsh
par_zsh_man ### From man env_parallel
par_zsh_man aliases work
par_zsh_man aliases work
par_zsh_man aliases work
par_zsh_man aliases work
par_zsh_man aliases with = & " work
par_zsh_man aliases with = & " work
par_zsh_man aliases with = & " work
par_zsh_man aliases with = & " work
par_zsh_man multiline
par_zsh_man aliases work
par_zsh_man aliases with = & " work
par_zsh_man multiline
par_zsh_man aliases work
par_zsh_man aliases with = & " work
par_zsh_man multiline
par_zsh_man aliases work
par_zsh_man aliases with = & " work
par_zsh_man multiline
par_zsh_man aliases work
par_zsh_man functions work
par_zsh_man functions work
par_zsh_man functions work
par_zsh_man functions work
par_zsh_man variables work
par_zsh_man variables work
par_zsh_man variables work
par_zsh_man variables work
par_zsh_man aliases with = & " work
par_zsh_man functions with = & " work
par_zsh_man functions with = & " work
par_zsh_man functions with = & " work
par_zsh_man functions with = & " work
par_zsh_man variables with = & " work
par_zsh_man variables with = & " work
par_zsh_man variables with = & " work
par_zsh_man variables with = & " work
par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work,
par_zsh_man too
par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work,
par_zsh_man too
par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work,
par_zsh_man too
par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work,
par_zsh_man too
par_zsh_man exit value 2 should be 2
@ -210,27 +214,28 @@ par_tcsh_parset Not implemented
par_tcsh_man ### tcsh
par_tcsh_man ### From man env_parallel
par_tcsh_man #: Command not found.
par_tcsh_man aliases work
par_tcsh_man aliases work
par_tcsh_man aliases work
par_tcsh_man aliases work
par_tcsh_man aliases with = & " work
par_tcsh_man aliases with = & " work
par_tcsh_man aliases with = & " work
par_tcsh_man aliases with = & " work
par_tcsh_man Functions not supported
par_tcsh_man variables work
par_tcsh_man variables work
par_tcsh_man variables work
par_tcsh_man variables work
par_tcsh_man variables with = & " work
par_tcsh_man variables with = & " work
par_tcsh_man variables with = & " work
par_tcsh_man variables with = & " work
par_tcsh_man #: Command not found.
par_tcsh_man arrays
par_tcsh_man work,
par_tcsh_man too
par_tcsh_man with
par_tcsh_man =
par_tcsh_man arrays
par_tcsh_man work,
par_tcsh_man too
par_tcsh_man with
par_tcsh_man =
par_tcsh_man arrays
par_tcsh_man work,
par_tcsh_man too
par_tcsh_man with
par_tcsh_man =
par_tcsh_man arrays
par_tcsh_man work,
par_tcsh_man too
par_tcsh_man with
par_tcsh_man =
par_tcsh_man exit value 2 should be 2
par_tcsh_man Unknown option: no-such-option
par_tcsh_man Usage:
@ -349,30 +354,30 @@ par_sh_parset 2
par_sh_parset 3
par_sh_man ### sh
par_sh_man ### From man env_parallel
par_sh_man aliases work
par_sh_man aliases work
par_sh_man aliases work
par_sh_man aliases work
par_sh_man aliases with = & " work
par_sh_man aliases with = & " work
par_sh_man aliases with = & " work
par_sh_man aliases with = & " work
par_sh_man multiline
par_sh_man aliases work
par_sh_man aliases with = & " work
par_sh_man multiline
par_sh_man aliases work
par_sh_man aliases with = & " work
par_sh_man multiline
par_sh_man aliases work
par_sh_man aliases with = & " work
par_sh_man multiline
par_sh_man aliases work
par_sh_man variables work
par_sh_man variables work
par_sh_man variables work
par_sh_man variables work
par_sh_man aliases with = & " work
par_sh_man variables with = & " work
par_sh_man variables with = & " work
par_sh_man variables with = & " work
par_sh_man variables with = & " work
par_sh_man multiline
par_sh_man variables work
par_sh_man variables with = & " work
par_sh_man multiline
par_sh_man variables work
par_sh_man variables with = & " work
par_sh_man multiline
par_sh_man variables work
par_sh_man variables with = & " work
par_sh_man multiline
par_sh_man variables work
par_sh_man variables with = & " work
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
@ -387,25 +392,25 @@ par_sh_environment_too_big OK_bigvar_remote
par_sh_environment_too_big OK_bigvar_quote
par_sh_environment_too_big OK_bigvar_quote_remote
par_sh_environment_too_big Rest should fail
par_sh_environment_too_big sh: 131: perl: Argument list too long
par_sh_environment_too_big sh: 132: perl: Argument list too long
par_sh_environment_too_big env_parallel: Error: Your environment is too big.
par_sh_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_sh_environment_too_big env_parallel: Error: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--env _'
par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel
par_sh_environment_too_big sh: 131: perl: Argument list too long
par_sh_environment_too_big sh: 132: perl: Argument list too long
par_sh_environment_too_big env_parallel: Error: Your environment is too big.
par_sh_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_sh_environment_too_big env_parallel: Error: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--env _'
par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel
par_sh_environment_too_big sh: 131: perl: Argument list too long
par_sh_environment_too_big sh: 132: perl: Argument list too long
par_sh_environment_too_big env_parallel: Error: Your environment is too big.
par_sh_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_sh_environment_too_big env_parallel: Error: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--env _'
par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel
par_sh_environment_too_big sh: 131: perl: Argument list too long
par_sh_environment_too_big sh: 132: perl: Argument list too long
par_sh_environment_too_big env_parallel: Error: Your environment is too big.
par_sh_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_sh_environment_too_big env_parallel: Error: env_parallel --record-env
@ -488,50 +493,50 @@ par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar m
par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_man ### ksh
par_ksh_man ### From man env_parallel
par_ksh_man aliases work
par_ksh_man aliases work
par_ksh_man aliases work
par_ksh_man aliases work
par_ksh_man aliases with = & " work
par_ksh_man aliases with = & " work
par_ksh_man aliases with = & " work
par_ksh_man aliases with = & " work
par_ksh_man env_parallel: Warning: Alias "multiline" contains newline.
par_ksh_man env_parallel: Warning: Make sure the command has at least one newline after "multiline".
par_ksh_man env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline
par_ksh_man aliases work
par_ksh_man aliases with = & " work
par_ksh_man env_parallel: Warning: Alias "multiline" contains newline.
par_ksh_man env_parallel: Warning: Make sure the command has at least one newline after "multiline".
par_ksh_man env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline
par_ksh_man aliases work
par_ksh_man aliases with = & " work
par_ksh_man env_parallel: Warning: Alias "multiline" contains newline.
par_ksh_man env_parallel: Warning: Make sure the command has at least one newline after "multiline".
par_ksh_man env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline
par_ksh_man aliases work
par_ksh_man aliases with = & " work
par_ksh_man env_parallel: Warning: Alias "multiline" contains newline.
par_ksh_man env_parallel: Warning: Make sure the command has at least one newline after "multiline".
par_ksh_man env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline
par_ksh_man aliases work
par_ksh_man functions work
par_ksh_man functions work
par_ksh_man functions work
par_ksh_man functions work
par_ksh_man variables work
par_ksh_man variables work
par_ksh_man variables work
par_ksh_man variables work
par_ksh_man aliases with = & " work
par_ksh_man functions with = & " work
par_ksh_man functions with = & " work
par_ksh_man functions with = & " work
par_ksh_man functions with = & " work
par_ksh_man variables with = & " work
par_ksh_man variables with = & " work
par_ksh_man variables with = & " work
par_ksh_man variables with = & " work
par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work,
par_ksh_man too
par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work,
par_ksh_man too
par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work,
par_ksh_man too
par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work,
par_ksh_man too
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
@ -671,28 +676,32 @@ par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myfunc
par_fish_parset Not implemented
par_fish_man ### fish
par_fish_man ### From man env_parallel
par_fish_man aliases work
par_fish_man aliases work
par_fish_man aliases work
par_fish_man aliases work
par_fish_man functions work
par_fish_man functions work
par_fish_man functions work
par_fish_man functions work
par_fish_man variables work
par_fish_man variables work
par_fish_man variables work
par_fish_man variables work
par_fish_man aliases with = & " work
par_fish_man aliases with = & " work
par_fish_man aliases with = & " work
par_fish_man aliases with = & " work
par_fish_man functions with = & " work
par_fish_man functions with = & " work
par_fish_man functions with = & " work
par_fish_man functions with = & " work
par_fish_man variables = & " work
par_fish_man variables = & " work
par_fish_man variables = & " work
par_fish_man variables = & " work
par_fish_man arrays
par_fish_man with = & "
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & "
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & "
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & "
par_fish_man work,
par_fish_man too
par_fish_man exit value 2 should be 2
@ -782,30 +791,30 @@ par_dash_parset 2
par_dash_parset 3
par_dash_man ### dash
par_dash_man ### From man env_parallel
par_dash_man aliases work
par_dash_man aliases work
par_dash_man aliases work
par_dash_man aliases work
par_dash_man aliases with = & " work
par_dash_man aliases with = & " work
par_dash_man aliases with = & " work
par_dash_man aliases with = & " work
par_dash_man multiline
par_dash_man aliases work
par_dash_man aliases with = & " work
par_dash_man multiline
par_dash_man aliases work
par_dash_man aliases with = & " work
par_dash_man multiline
par_dash_man aliases work
par_dash_man aliases with = & " work
par_dash_man multiline
par_dash_man aliases work
par_dash_man variables work
par_dash_man variables work
par_dash_man variables work
par_dash_man variables work
par_dash_man aliases with = & " work
par_dash_man variables with = & " work
par_dash_man variables with = & " work
par_dash_man variables with = & " work
par_dash_man variables with = & " work
par_dash_man multiline
par_dash_man variables work
par_dash_man variables with = & " work
par_dash_man multiline
par_dash_man variables work
par_dash_man variables with = & " work
par_dash_man multiline
par_dash_man variables work
par_dash_man variables with = & " work
par_dash_man multiline
par_dash_man variables work
par_dash_man variables with = & " work
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
@ -820,25 +829,25 @@ par_dash_environment_too_big OK_bigvar_remote
par_dash_environment_too_big OK_bigvar_quote
par_dash_environment_too_big OK_bigvar_quote_remote
par_dash_environment_too_big Rest should fail
par_dash_environment_too_big dash: 125: perl: Argument list too long
par_dash_environment_too_big dash: 132: perl: Argument list too long
par_dash_environment_too_big env_parallel: Error: Your environment is too big.
par_dash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_dash_environment_too_big env_parallel: Error: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--env _'
par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_dash_environment_too_big dash: 125: perl: Argument list too long
par_dash_environment_too_big dash: 132: perl: Argument list too long
par_dash_environment_too_big env_parallel: Error: Your environment is too big.
par_dash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_dash_environment_too_big env_parallel: Error: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--env _'
par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_dash_environment_too_big dash: 125: perl: Argument list too long
par_dash_environment_too_big dash: 132: perl: Argument list too long
par_dash_environment_too_big env_parallel: Error: Your environment is too big.
par_dash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_dash_environment_too_big env_parallel: Error: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--env _'
par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_dash_environment_too_big dash: 125: perl: Argument list too long
par_dash_environment_too_big dash: 132: perl: Argument list too long
par_dash_environment_too_big env_parallel: Error: Your environment is too big.
par_dash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_dash_environment_too_big env_parallel: Error: env_parallel --record-env
@ -893,6 +902,10 @@ par_csh_man {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}
par_csh_man ;login: The USENIX Magazine, February 2011:42-47.
par_csh_man O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
par_csh_man ### From man env_parallel
par_csh_man &
par_csh_man &
par_csh_man &
par_csh_man &
par_csh_man --colsep regexp Split input on regexp for positional replacements
par_csh_man --nonall Run the given command with no arguments on all sshlogins
par_csh_man --onall Run the given command with argument on all sshlogins
@ -905,6 +918,10 @@ par_csh_man -S sshlogin Example: foo@server.example.com
par_csh_man -X Multiple arguments with context replace
par_csh_man -j n Run n jobs in parallel
par_csh_man -k Keep same order
par_csh_man =
par_csh_man =
par_csh_man =
par_csh_man =
par_csh_man Academic tradition requires you to cite works you base your article on.
par_csh_man If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
par_csh_man If you use programs that use GNU Parallel to process data for an article in a
@ -913,10 +930,10 @@ par_csh_man This helps funding further development; AND IT WON'T COST YOU A CENT
par_csh_man Unknown option: no-such-option
par_csh_man Usage:
par_csh_man With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} =
par_csh_man aliases work
par_csh_man aliases work
par_csh_man aliases work
par_csh_man aliases work
par_csh_man aliases with = & " work
par_csh_man aliases with = & " work
par_csh_man aliases with = & " work
par_csh_man aliases with = & " work
par_csh_man arrays
par_csh_man arrays
par_csh_man arrays
@ -927,18 +944,14 @@ par_csh_man exit value 2 should be 2
par_csh_man parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))...
par_csh_man parallel [options] [command [arguments]] < list_of_arguments
par_csh_man scientific publication, please cite:
par_csh_man too
par_csh_man too
par_csh_man too
par_csh_man too
par_csh_man variables work
par_csh_man variables work
par_csh_man variables work
par_csh_man variables work
par_csh_man work,
par_csh_man work,
par_csh_man work,
par_csh_man work,
par_csh_man variables with = & " work
par_csh_man variables with = & " work
par_csh_man variables with = & " work
par_csh_man variables with = & " work
par_csh_man with
par_csh_man with
par_csh_man with
par_csh_man with
par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings
par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings
par_csh_funky 3 arg alias_works
@ -1019,60 +1032,64 @@ par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar
par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_man ### bash
par_bash_man ### From man env_parallel
par_bash_man aliases work
par_bash_man aliases work
par_bash_man aliases work
par_bash_man aliases work
par_bash_man aliases with = & " work
par_bash_man aliases with = & " work
par_bash_man aliases with = & " work
par_bash_man aliases with = & " work
par_bash_man env_parallel: Warning: Alias 'multiline' contains newline.
par_bash_man env_parallel: Warning: Make sure the command has at least one newline after 'multiline'.
par_bash_man env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline
par_bash_man aliases work
par_bash_man aliases with = & " work
par_bash_man but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains newline.
par_bash_man env_parallel: Warning: Make sure the command has at least one newline after 'multiline'.
par_bash_man env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline
par_bash_man aliases work
par_bash_man aliases with = & " work
par_bash_man but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains newline.
par_bash_man env_parallel: Warning: Make sure the command has at least one newline after 'multiline'.
par_bash_man env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline
par_bash_man aliases work
par_bash_man aliases with = & " work
par_bash_man but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains newline.
par_bash_man env_parallel: Warning: Make sure the command has at least one newline after 'multiline'.
par_bash_man env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline
par_bash_man aliases work
par_bash_man aliases with = & " work
par_bash_man but only when followed by a newline
par_bash_man functions work
par_bash_man functions work
par_bash_man functions work
par_bash_man functions work
par_bash_man variables work
par_bash_man variables work
par_bash_man variables work
par_bash_man variables work
par_bash_man functions with = & " work
par_bash_man functions with = & " work
par_bash_man functions with = & " work
par_bash_man functions with = & " work
par_bash_man variables with = & " work
par_bash_man variables with = & " work
par_bash_man variables with = & " work
par_bash_man variables with = & " work
par_bash_man multiline
par_bash_man variables work
par_bash_man variables with = & " work
par_bash_man multiline
par_bash_man variables work
par_bash_man variables with = & " work
par_bash_man multiline
par_bash_man variables work
par_bash_man variables with = & " work
par_bash_man multiline
par_bash_man variables work
par_bash_man variables with = & " work
par_bash_man arrays
par_bash_man with = & "
par_bash_man work,
par_bash_man too
par_bash_man arrays
par_bash_man with = & "
par_bash_man work,
par_bash_man too
par_bash_man arrays
par_bash_man with = & "
par_bash_man work,
par_bash_man too
par_bash_man arrays
par_bash_man with = & "
par_bash_man work,
par_bash_man too
par_bash_man exit value 2 should be 2
@ -1221,30 +1238,30 @@ par_ash_parset 2
par_ash_parset 3
par_ash_man ### ash
par_ash_man ### From man env_parallel
par_ash_man aliases work
par_ash_man aliases work
par_ash_man aliases work
par_ash_man aliases work
par_ash_man aliases with = & " work
par_ash_man aliases with = & " work
par_ash_man aliases with = & " work
par_ash_man aliases with = & " work
par_ash_man multiline
par_ash_man aliases work
par_ash_man aliases with = & " work
par_ash_man multiline
par_ash_man aliases work
par_ash_man aliases with = & " work
par_ash_man multiline
par_ash_man aliases work
par_ash_man aliases with = & " work
par_ash_man multiline
par_ash_man aliases work
par_ash_man variables work
par_ash_man variables work
par_ash_man variables work
par_ash_man variables work
par_ash_man aliases with = & " work
par_ash_man variables with = & " work
par_ash_man variables with = & " work
par_ash_man variables with = & " work
par_ash_man variables with = & " work
par_ash_man multiline
par_ash_man variables work
par_ash_man variables with = & " work
par_ash_man multiline
par_ash_man variables work
par_ash_man variables with = & " work
par_ash_man multiline
par_ash_man variables work
par_ash_man variables with = & " work
par_ash_man multiline
par_ash_man variables work
par_ash_man variables with = & " work
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
@ -1259,25 +1276,25 @@ par_ash_environment_too_big OK_bigvar_remote
par_ash_environment_too_big OK_bigvar_quote
par_ash_environment_too_big OK_bigvar_quote_remote
par_ash_environment_too_big Rest should fail
par_ash_environment_too_big ash: 125: perl: Argument list too long
par_ash_environment_too_big ash: 132: perl: Argument list too long
par_ash_environment_too_big env_parallel: Error: Your environment is too big.
par_ash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_ash_environment_too_big env_parallel: Error: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--env _'
par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_ash_environment_too_big ash: 125: perl: Argument list too long
par_ash_environment_too_big ash: 132: perl: Argument list too long
par_ash_environment_too_big env_parallel: Error: Your environment is too big.
par_ash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_ash_environment_too_big env_parallel: Error: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--env _'
par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_ash_environment_too_big ash: 125: perl: Argument list too long
par_ash_environment_too_big ash: 132: perl: Argument list too long
par_ash_environment_too_big env_parallel: Error: Your environment is too big.
par_ash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_ash_environment_too_big env_parallel: Error: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--env _'
par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel
par_ash_environment_too_big ash: 125: perl: Argument list too long
par_ash_environment_too_big ash: 132: perl: Argument list too long
par_ash_environment_too_big env_parallel: Error: Your environment is too big.
par_ash_environment_too_big env_parallel: Error: Try running this in a clean environment once:
par_ash_environment_too_big env_parallel: Error: env_parallel --record-env

View file

@ -209,13 +209,6 @@ echo ac
ac
echo ac
ac
echo '### Test bug #34241: --pipe should not spawn unneeded processes'
### Test bug #34241: --pipe should not spawn unneeded processes
seq 3 | parallel -j30 --pipe --block-size 10 cat\;echo o
1
2
3
o
echo '### Test :::: mixed with :::'
### Test :::: mixed with :::
echo '### Test :::: < ::: :::'

View file

@ -10,7 +10,7 @@ scientific publication, please cite:
This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run 'parallel --citation'.
To silence this citation notice: run 'parallel --citation' once.
echo a
a
@ -30,7 +30,7 @@ scientific publication, please cite:
This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run 'parallel --citation'.
To silence this citation notice: run 'parallel --citation' once.
10 files to edit
[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.

View file

@ -10,39 +10,6 @@ echo '### test --sshdelay'
### test --sshdelay
stdout /usr/bin/time -f %e parallel -j0 --sshdelay 0.5 -S localhost true ::: 1 2 3 | perl -ne 'print($_ > 1.30 ? "OK\n" : "Not OK\n")'
OK
echo '### bug #38299: --resume-failed -k'
### bug #38299: --resume-failed -k
rm -f /tmp/joblog-38299; parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1; echo try 2. Gives failing - not 0; parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1; echo with exit 0; parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit 0 ::: 0 1 2 3 0 1; echo try 2 again. Gives empty; parallel -k --resume-failed --joblog /tmp/joblog-38299 echo job{#} val {}\;exit {} ::: 0 1 2 3 0 1; rm /tmp/joblog-38299
job1 val 0
job2 val 1
job3 val 2
job4 val 3
job5 val 0
job6 val 1
try 2. Gives failing - not 0
job2 val 1
job3 val 2
job4 val 3
job6 val 1
with exit 0
job2 val 1
job3 val 2
job4 val 3
job6 val 1
try 2 again. Gives empty
echo '### --resume -k'
### --resume -k
rm -f /tmp/joblog-resume; parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit {} ::: 0 1 2 3 0 5; echo try 2 = nothing; parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit {} ::: 0 1 2 3 0 5; echo two extra; parallel -k --resume --joblog /tmp/joblog-resume echo job{}id\;exit 0 ::: 0 1 2 3 0 5 6 7; rm -f /tmp/joblog-resume
job0id
job1id
job2id
job3id
job0id
job5id
try 2 = nothing
two extra
job6id
job7id
echo "bug #37694: Empty string argument skipped when using --quote"
bug #37694: Empty string argument skipped when using --quote
parallel -q --nonall perl -le 'print scalar @ARGV' 'a' 'b' ''

View file

@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
echo '### --version must have higher priority than retired options'
### --version must have higher priority than retired options
$NICEPAR --version -g -Y -U -W -T | tail
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018
Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.