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 20171222
* env_parset for ash, dash, ksh, sh, zsh * 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: Full installation of GNU Parallel is as simple as:
wget http://ftpmirror.gnu.org/parallel/parallel-20171222.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2
bzip2 -dc parallel-20171222.tar.bz2 | tar xvf - bzip2 -dc parallel-20180122.tar.bz2 | tar xvf -
cd parallel-20171222 cd parallel-20180122
./configure && make && sudo make install ./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 If you are not root you can add ~/bin to your path and install in
~/bin and ~/share: ~/bin and ~/share:
wget http://ftpmirror.gnu.org/parallel/parallel-20171222.tar.bz2 wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2
bzip2 -dc parallel-20171222.tar.bz2 | tar xvf - bzip2 -dc parallel-20180122.tar.bz2 | tar xvf -
cd parallel-20171222 cd parallel-20180122
./configure --prefix=$HOME && make && make install ./configure --prefix=$HOME && make && make install
Or if your system lacks 'make' you can simply copy src/parallel 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 If you just need parallel and do not have 'make' installed (maybe the
system is old or Microsoft Windows): 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 chmod 755 parallel
cp parallel sem cp parallel sem
mv parallel sem dir-in-your-$PATH/bin/ 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 #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # 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>. # Report bugs to <bug-parallel@gnu.org>.
# #
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='parallel' PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel' PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20171222' PACKAGE_VERSION='20180122'
PACKAGE_STRING='parallel 20171222' PACKAGE_STRING='parallel 20180122'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' 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. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF 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]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20171222:";; short | recursive ) echo "Configuration of parallel 20180122:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
parallel configure 20171222 parallel configure 20180122
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. 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 generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20171222' VERSION='20180122'
cat >>confdefs.h <<_ACEOF 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 # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" 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 generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
parallel config.status 20171222 parallel config.status 20180122
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" 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]) AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([ AC_CONFIG_FILES([

View file

@ -199,19 +199,24 @@ to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> 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.>> <<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: 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 * 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>> <<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"> <directory name="parallel" rev="216" srcmd5="8f7a185b24d9bbf7d205810dc0400fc3" vrev="2">
<entry md5="8b44ef3f5aac2302f976cb58cf61fe87" mtime="1513986752" name="parallel-20171222.tar.bz2" size="1690096" /> <entry md5="dc3c49472f24afa64146433955e3c60c" mtime="1516637654" name="parallel-20180122.tar.bz2" size="1717898" />
<entry md5="5f4277facf3f4777b0cea688027954a3" mtime="1513986752" name="parallel.spec" size="4693" /> <entry md5="09b2f07b64cc64aef10f459b57fe8e25" mtime="1516624602" name="parallel.spec" size="4693" />
<entry md5="ca877325712ba2d1f5906548427de534" mtime="1513986752" name="parallel_20171222.dsc" size="556" /> <entry md5="e429add03e21bbe237a9cd03249acb13" mtime="1516637656" name="parallel_20180122.dsc" size="556" />
<entry md5="21420e5e8a3c415584438286cb2cdcaf" mtime="1513986753" name="parallel_20171222.tar.gz" size="1894418" /> <entry md5="cd809eb297ee7fb8821786b6a814090c" mtime="1516637670" name="parallel_20180122.tar.gz" size="1904981" />
</directory> </directory>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -24,7 +24,7 @@
use strict; use strict;
use Getopt::Long; use Getopt::Long;
$Global::progname="niceload"; $Global::progname="niceload";
$Global::version = 20171224; $Global::version = 20180122;
Getopt::Long::Configure("bundling","require_order"); Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage(); get_options_from_array(\@ARGV) || die_usage();
if($opt::version) { 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)); 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( $Global::JobQueue = JobQueue->new(
\@command,\@input_source_fh,$Global::ContextReplace, \@command,\@input_source_fh,$Global::ContextReplace,
$number_of_args,\@Global::transfer_files,\@Global::ret_files); $number_of_args,\@Global::transfer_files,\@Global::ret_files);
@ -1391,7 +1388,7 @@ sub check_invalid_option_combinations {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20180107; $Global::version = 20180122;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;

View file

@ -431,9 +431,9 @@ It is compatible with B<zenity>:
=item B<--bf> I<file> =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 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 Multiple B<--bf> can be specified to transfer more basefiles. The
I<file> will be transferred the same way as B<--transferfile>. 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> =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 printed when the command is finished. stdout (standard output) first
followed by stderr (standard error). 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 parallel --tag --nonall -S server1,server2 uptime
B<--nonall> reads no arguments. If you have a list of jobs you want 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 parallel --tag --onall -S server1,server2 echo ::: 1 2 3

View file

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

View file

@ -81,7 +81,7 @@ par__memleak() {
par_slow_total_jobs() { par_slow_total_jobs() {
echo 'bug #51006: Slow total_jobs() eats job' echo 'bug #51006: Slow total_jobs() eats job'
(echo a; sleep 15; echo b; sleep 15; seq 2) | (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() { par_interactive() {

View file

@ -4,6 +4,36 @@
# Each should be taking 3-10s and be possible to run in parallel # Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins # 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() { par_results_arg_256() {
echo '### bug #42089: --results with arg > 256 chars (should be 1 char shorter)' echo '### bug #42089: --results with arg > 256 chars (should be 1 char shorter)'
parallel --results parallel_test_dir echo ::: 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456; parallel --results parallel_test_dir echo ::: 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456;
@ -167,7 +197,7 @@ par_parcat_mixing() {
slow_output() { slow_output() {
string=$1 string=$1
perl -e 'print "'$string'"x9000,"start\n"' perl -e 'print "'$string'"x9000,"start\n"'
sleep 3 sleep 4
perl -e 'print "'$string'"x9000,"end\n"' perl -e 'print "'$string'"x9000,"end\n"'
} }
tmp1=$(mktmpfifo) tmp1=$(mktmpfifo)

View file

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

View file

@ -7,7 +7,7 @@ par_path_remote_bash() {
rm -rf /tmp/parallel rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp 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 echo BASH Path before: $PATH with no parallel
parallel echo ::: 1 parallel echo ::: 1
# Race condition stderr/stdout # Race condition stderr/stdout
@ -28,7 +28,7 @@ par_path_remote_csh() {
rm -rf /tmp/parallel rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp 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 echo CSH Path before: $PATH with no parallel
which parallel >& /dev/stdout which parallel >& /dev/stdout
echo '^^^^^^^^ Not found is OK' 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 '### Test of bug: If input is empty string'
(echo ; echo abcbdbebf;echo abc) | parallel -k --colsep b -v echo {1}{2} (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 :::: mixed with :::'
echo '### Test :::: < ::: :::' echo '### Test :::: < ::: :::'
parallel -k echo {1} {2} {3} :::: <(seq 6 7) ::: 4 5 ::: 1 2 3 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' 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")' 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" echo "bug #37694: Empty string argument skipped when using --quote"
parallel -q --nonall perl -le 'print scalar @ARGV' 'a' 'b' '' 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 bug #49664: --round-robin does not complete
par_round_robin_blocks 8 par_round_robin_blocks 8
par_slow_total_jobs bug #51006: Slow total_jobs() eats job 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 a
par_slow_total_jobs b par_slow_total_jobs b
par_slow_total_jobs 1 par_slow_total_jobs 1
par_slow_total_jobs 2 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 bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S tmp attach par_tmux_fg See output with: tmux -S tmp attach
par_tmux_fg open terminal failed: not a terminal 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 bstart
par_parcat_mixing aend par_parcat_mixing aend
par_parcat_mixing bend 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 ### --pipepart --block -# (# < 0)
par_pipepart_block 1 par_pipepart_block 1
par_pipepart_block 2 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 ### bug #42089: --results with arg > 256 chars (should be 1 char shorter)
par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 par_results_arg_256 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
par_results_arg_256 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345 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 ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834
par_slow_args_generation 1 par_slow_args_generation 1
par_slow_args_generation 2 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_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 ### zsh
par_zsh_man ### From man env_parallel par_zsh_man ### From man env_parallel
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man multiline par_zsh_man multiline
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man multiline par_zsh_man multiline
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man multiline par_zsh_man multiline
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man multiline par_zsh_man multiline
par_zsh_man aliases work par_zsh_man aliases with = & " work
par_zsh_man functions work par_zsh_man functions with = & " work
par_zsh_man functions work par_zsh_man functions with = & " work
par_zsh_man functions work par_zsh_man functions with = & " work
par_zsh_man functions work par_zsh_man functions with = & " work
par_zsh_man variables work par_zsh_man variables with = & " work
par_zsh_man variables work par_zsh_man variables with = & " work
par_zsh_man variables work par_zsh_man variables with = & " work
par_zsh_man variables work par_zsh_man variables with = & " work
par_zsh_man arrays par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work, par_zsh_man work,
par_zsh_man too par_zsh_man too
par_zsh_man arrays par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work, par_zsh_man work,
par_zsh_man too par_zsh_man too
par_zsh_man arrays par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work, par_zsh_man work,
par_zsh_man too par_zsh_man too
par_zsh_man arrays par_zsh_man arrays
par_zsh_man with = & "
par_zsh_man work, par_zsh_man work,
par_zsh_man too par_zsh_man too
par_zsh_man exit value 2 should be 2 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 ### tcsh
par_tcsh_man ### From man env_parallel par_tcsh_man ### From man env_parallel
par_tcsh_man #: Command not found. par_tcsh_man #: Command not found.
par_tcsh_man aliases work par_tcsh_man aliases with = & " work
par_tcsh_man aliases work par_tcsh_man aliases with = & " work
par_tcsh_man aliases work par_tcsh_man aliases with = & " work
par_tcsh_man aliases work par_tcsh_man aliases with = & " work
par_tcsh_man Functions not supported par_tcsh_man Functions not supported
par_tcsh_man variables work par_tcsh_man variables with = & " work
par_tcsh_man variables work par_tcsh_man variables with = & " work
par_tcsh_man variables work par_tcsh_man variables with = & " work
par_tcsh_man variables work par_tcsh_man variables with = & " work
par_tcsh_man #: Command not found.
par_tcsh_man arrays par_tcsh_man arrays
par_tcsh_man work, par_tcsh_man with
par_tcsh_man too par_tcsh_man =
par_tcsh_man arrays par_tcsh_man arrays
par_tcsh_man work, par_tcsh_man with
par_tcsh_man too par_tcsh_man =
par_tcsh_man arrays par_tcsh_man arrays
par_tcsh_man work, par_tcsh_man with
par_tcsh_man too par_tcsh_man =
par_tcsh_man arrays par_tcsh_man arrays
par_tcsh_man work, par_tcsh_man with
par_tcsh_man too par_tcsh_man =
par_tcsh_man exit value 2 should be 2 par_tcsh_man exit value 2 should be 2
par_tcsh_man Unknown option: no-such-option par_tcsh_man Unknown option: no-such-option
par_tcsh_man Usage: par_tcsh_man Usage:
@ -349,30 +354,30 @@ par_sh_parset 2
par_sh_parset 3 par_sh_parset 3
par_sh_man ### sh par_sh_man ### sh
par_sh_man ### From man env_parallel par_sh_man ### From man env_parallel
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man aliases work par_sh_man aliases with = & " work
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man multiline par_sh_man multiline
par_sh_man variables work par_sh_man variables with = & " work
par_sh_man multiline 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 exit value 2 should be 2
par_sh_man Unknown option: no-such-option par_sh_man Unknown option: no-such-option
par_sh_man exit value 255 should be 255 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
par_sh_environment_too_big OK_bigvar_quote_remote par_sh_environment_too_big OK_bigvar_quote_remote
par_sh_environment_too_big Rest should fail 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: 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: 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: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_sh_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: 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_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 ### ksh
par_ksh_man ### From man env_parallel par_ksh_man ### From man env_parallel
par_ksh_man aliases work par_ksh_man aliases with = & " work
par_ksh_man aliases work par_ksh_man aliases with = & " work
par_ksh_man aliases work par_ksh_man aliases with = & " work
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: 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: 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 env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline 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: 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: 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 env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline 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: 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: 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 env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline 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: 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: 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 env_parallel: Warning: See BUGS in "man env_parallel".
par_ksh_man multiline par_ksh_man multiline
par_ksh_man aliases work par_ksh_man aliases with = & " work
par_ksh_man functions work par_ksh_man functions with = & " work
par_ksh_man functions work par_ksh_man functions with = & " work
par_ksh_man functions work par_ksh_man functions with = & " work
par_ksh_man functions work par_ksh_man functions with = & " work
par_ksh_man variables work par_ksh_man variables with = & " work
par_ksh_man variables work par_ksh_man variables with = & " work
par_ksh_man variables work par_ksh_man variables with = & " work
par_ksh_man variables work par_ksh_man variables with = & " work
par_ksh_man arrays par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work, par_ksh_man work,
par_ksh_man too
par_ksh_man arrays par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work, par_ksh_man work,
par_ksh_man too
par_ksh_man arrays par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work, par_ksh_man work,
par_ksh_man too
par_ksh_man arrays par_ksh_man arrays
par_ksh_man with = & "
par_ksh_man work, par_ksh_man work,
par_ksh_man too
par_ksh_man exit value 2 should be 2 par_ksh_man exit value 2 should be 2
par_ksh_man Unknown option: no-such-option par_ksh_man Unknown option: no-such-option
par_ksh_man exit value 255 should be 255 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_parset Not implemented
par_fish_man ### fish par_fish_man ### fish
par_fish_man ### From man env_parallel par_fish_man ### From man env_parallel
par_fish_man aliases work par_fish_man aliases with = & " work
par_fish_man aliases work par_fish_man aliases with = & " work
par_fish_man aliases work par_fish_man aliases with = & " work
par_fish_man aliases work par_fish_man aliases with = & " work
par_fish_man functions work par_fish_man functions with = & " work
par_fish_man functions work par_fish_man functions with = & " work
par_fish_man functions work par_fish_man functions with = & " work
par_fish_man functions 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 variables work par_fish_man variables = & " work
par_fish_man variables work par_fish_man variables = & " work
par_fish_man arrays par_fish_man arrays
par_fish_man with = & "
par_fish_man work, par_fish_man work,
par_fish_man too par_fish_man too
par_fish_man arrays par_fish_man arrays
par_fish_man with = & "
par_fish_man work, par_fish_man work,
par_fish_man too par_fish_man too
par_fish_man arrays par_fish_man arrays
par_fish_man with = & "
par_fish_man work, par_fish_man work,
par_fish_man too par_fish_man too
par_fish_man arrays par_fish_man arrays
par_fish_man with = & "
par_fish_man work, par_fish_man work,
par_fish_man too par_fish_man too
par_fish_man exit value 2 should be 2 par_fish_man exit value 2 should be 2
@ -782,30 +791,30 @@ par_dash_parset 2
par_dash_parset 3 par_dash_parset 3
par_dash_man ### dash par_dash_man ### dash
par_dash_man ### From man env_parallel par_dash_man ### From man env_parallel
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man aliases work par_dash_man aliases with = & " work
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man multiline par_dash_man multiline
par_dash_man variables work par_dash_man variables with = & " work
par_dash_man multiline 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 exit value 2 should be 2
par_dash_man Unknown option: no-such-option par_dash_man Unknown option: no-such-option
par_dash_man exit value 255 should be 255 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
par_dash_environment_too_big OK_bigvar_quote_remote par_dash_environment_too_big OK_bigvar_quote_remote
par_dash_environment_too_big Rest should fail 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: 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: 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: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_dash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: 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 ;login: The USENIX Magazine, February 2011:42-47.
par_csh_man O. Tange (2011): GNU Parallel - The Command-Line Power Tool, par_csh_man O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
par_csh_man ### From man env_parallel 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 --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 --nonall Run the given command with no arguments on all sshlogins
par_csh_man --onall Run the given command with argument 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 -X Multiple arguments with context replace
par_csh_man -j n Run n jobs in parallel par_csh_man -j n Run n jobs in parallel
par_csh_man -k Keep same order 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 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 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 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 Unknown option: no-such-option
par_csh_man Usage: par_csh_man Usage:
par_csh_man With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = par_csh_man With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} =
par_csh_man aliases work par_csh_man aliases with = & " work
par_csh_man aliases work par_csh_man aliases with = & " work
par_csh_man aliases work par_csh_man aliases with = & " work
par_csh_man aliases work par_csh_man aliases with = & " work
par_csh_man arrays par_csh_man arrays
par_csh_man arrays 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]] (::: arguments|:::: argfile(s))...
par_csh_man parallel [options] [command [arguments]] < list_of_arguments par_csh_man parallel [options] [command [arguments]] < list_of_arguments
par_csh_man scientific publication, please cite: par_csh_man scientific publication, please cite:
par_csh_man too par_csh_man variables with = & " work
par_csh_man too par_csh_man variables with = & " work
par_csh_man too par_csh_man variables with = & " work
par_csh_man too par_csh_man variables with = & " work
par_csh_man variables work par_csh_man with
par_csh_man variables work par_csh_man with
par_csh_man variables work par_csh_man with
par_csh_man variables work par_csh_man with
par_csh_man work,
par_csh_man work,
par_csh_man work,
par_csh_man work,
par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings
par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings
par_csh_funky 3 arg alias_works 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_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 ### bash
par_bash_man ### From man env_parallel par_bash_man ### From man env_parallel
par_bash_man aliases work par_bash_man aliases with = & " work
par_bash_man aliases work par_bash_man aliases with = & " work
par_bash_man aliases work par_bash_man aliases with = & " work
par_bash_man aliases work par_bash_man aliases with = & " work
par_bash_man env_parallel: Warning: Alias 'multiline' contains 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: 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 env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline 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 but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains 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: 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 env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline 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 but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains 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: 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 env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline 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 but only when followed by a newline
par_bash_man env_parallel: Warning: Alias 'multiline' contains 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: 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 env_parallel: Warning: See BUGS in 'man env_parallel'.
par_bash_man multiline 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 but only when followed by a newline
par_bash_man functions work par_bash_man functions with = & " work
par_bash_man functions work par_bash_man functions with = & " work
par_bash_man functions work par_bash_man functions with = & " work
par_bash_man functions work par_bash_man functions with = & " work
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man multiline par_bash_man multiline
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man multiline par_bash_man multiline
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man multiline par_bash_man multiline
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man multiline par_bash_man multiline
par_bash_man variables work par_bash_man variables with = & " work
par_bash_man arrays par_bash_man arrays
par_bash_man with = & "
par_bash_man work, par_bash_man work,
par_bash_man too par_bash_man too
par_bash_man arrays par_bash_man arrays
par_bash_man with = & "
par_bash_man work, par_bash_man work,
par_bash_man too par_bash_man too
par_bash_man arrays par_bash_man arrays
par_bash_man with = & "
par_bash_man work, par_bash_man work,
par_bash_man too par_bash_man too
par_bash_man arrays par_bash_man arrays
par_bash_man with = & "
par_bash_man work, par_bash_man work,
par_bash_man too par_bash_man too
par_bash_man exit value 2 should be 2 par_bash_man exit value 2 should be 2
@ -1221,30 +1238,30 @@ par_ash_parset 2
par_ash_parset 3 par_ash_parset 3
par_ash_man ### ash par_ash_man ### ash
par_ash_man ### From man env_parallel par_ash_man ### From man env_parallel
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man aliases work par_ash_man aliases with = & " work
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man multiline par_ash_man multiline
par_ash_man variables work par_ash_man variables with = & " work
par_ash_man multiline 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 exit value 2 should be 2
par_ash_man Unknown option: no-such-option par_ash_man Unknown option: no-such-option
par_ash_man exit value 255 should be 255 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
par_ash_environment_too_big OK_bigvar_quote_remote par_ash_environment_too_big OK_bigvar_quote_remote
par_ash_environment_too_big Rest should fail 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: 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: 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: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env
par_ash_environment_too_big env_parallel: Error: And the use '--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 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: 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: 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: env_parallel --record-env

View file

@ -209,13 +209,6 @@ echo ac
ac ac
echo ac echo ac
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 :::' echo '### Test :::: mixed with :::'
### Test :::: mixed with ::: ### Test :::: mixed with :::
echo '### Test :::: < ::: :::' 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. 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. 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 echo a
a a
@ -30,7 +30,7 @@ scientific publication, please cite:
This helps funding further development; AND IT WON'T COST YOU A CENT. 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. 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 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. [?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 ### 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")' 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 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" echo "bug #37694: Empty string argument skipped when using --quote"
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' '' 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' echo '### --version must have higher priority than retired options'
### --version must have higher priority than retired options ### --version must have higher priority than retired options
$NICEPAR --version -g -Y -U -W -T | tail $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. Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 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. This is free software: you are free to change and redistribute it.