2015-07-29 00:33:28 +00:00
echo '### Test bug #45619: "--halt" erroneous error exit code (should give 0)'; seq 10 | parallel --halt now,fail=1 true; echo $?
### Test bug #45619: "--halt" erroneous error exit code (should give 0)
0
echo '**'
**
2014-07-15 00:40:38 +00:00
echo '### Test exit val - true'; echo true | parallel; echo $?
2013-12-19 01:19:19 +00:00
### Test exit val - true
0
2014-07-15 00:40:38 +00:00
echo '**'
2013-12-19 01:19:19 +00:00
**
2014-07-15 00:40:38 +00:00
echo '### Test exit val - false'; echo false | parallel; echo $?
2013-12-19 01:19:19 +00:00
### Test exit val - false
1
2014-07-15 00:40:38 +00:00
echo '**'
2013-12-19 01:19:19 +00:00
**
2014-09-23 18:14:57 +00:00
echo '### Test bug #43284: {%} and {#} with --xapply'; parallel --xapply 'echo {1} {#} {%} {2}' ::: a ::: b; parallel -N2 'echo {%}' ::: a b
### Test bug #43284: {%} and {#} with --xapply
a 1 1 b
1
echo '**'
**
2016-04-04 21:37:54 +00:00
echo '### bug #47501: --xapply for some input sources'
### bug #47501: --xapply for some input sources
# Wrapping does not work yet
parallel -k echo ::: a b c aWRAP :::+ aa bb cc ::: A B :::+ AA BB AAwrap
a aa A AA
a aa B BB
b bb A AA
b bb B BB
c cc A AA
c cc B BB
echo '**'
**
2014-10-14 20:56:03 +00:00
echo '### Test bug #43376: {%} and {#} with --pipe'
### Test bug #43376: {%} and {#} with --pipe
2015-01-02 21:32:00 +00:00
echo foo | parallel -q --pipe -k echo {#}
2014-10-14 20:56:03 +00:00
1
2015-01-02 21:32:00 +00:00
echo foo | parallel --pipe -k echo {%}
2014-10-14 20:56:03 +00:00
1
2015-01-02 21:32:00 +00:00
echo foo | parallel -q --pipe -k echo {%}
2014-10-14 20:56:03 +00:00
1
2015-01-02 21:32:00 +00:00
echo foo | parallel --pipe -k echo {#}
2014-10-14 20:56:03 +00:00
1
echo '**'
**
2014-12-12 12:30:54 +00:00
echo '### {= and =} in different groups separated by space'
### {= and =} in different groups separated by space
2015-01-02 21:32:00 +00:00
parallel echo {= s/a/b/ =} ::: a
b
parallel echo {= s/a/b/=} ::: a
b
parallel echo {= s/a/b/=}{= s/a/b/=} ::: a
bb
parallel echo {= s/a/b/=}{=s/a/b/=} ::: a
bb
parallel echo {= s/a/b/=}{= {= s/a/b/=} ::: a
b{= b
parallel echo {= s/a/b/=}{={=s/a/b/=} ::: a
b{=b
parallel echo {= s/a/b/ =} {={==} ::: a
b {=a
parallel echo {={= =} ::: a
{=a
parallel echo {= {= =} ::: a
{= a
parallel echo {= {= =} =} ::: a
{= a =}
2014-12-12 12:30:54 +00:00
echo '**'
**
echo '### {} as part of the command'
### {} as part of the command
echo p /bin/ls | parallel l{= s/p/s/ =}
/bin/ls
echo /bin/ls-p | parallel --colsep '-' l{=2 s/p/s/ =} {1}
/bin/ls
echo s /bin/ls | parallel l{}
/bin/ls
echo /bin/ls | parallel ls {}
/bin/ls
echo ls /bin/ls | parallel {}
/bin/ls
echo ls /bin/ls | parallel
/bin/ls
2014-12-14 08:44:32 +00:00
echo '**'
**
echo '### bug #43817: Some JP char cause problems in positional replacement strings'
### bug #43817: Some JP char cause problems in positional replacement strings
parallel -k echo ::: '<27> <<3C> >' '<27> <1 $_=2<> >' 'ワ'
<EFBFBD> <<3C> >
<EFBFBD> <1 $_=2<> >
ワ
parallel -k echo {1} ::: '<27> <<3C> >' '<27> <1 $_=2<> >' 'ワ'
<EFBFBD> <<3C> >
<EFBFBD> <1 $_=2<> >
ワ
parallel -Xj1 echo ::: '<27> <<3C> >' '<27> <1 $_=2<> >' 'ワ'
<EFBFBD> <<3C> > <20> <1 $_=2<> > ワ
parallel -Xj1 echo {1} ::: '<27> <<3C> >' '<27> <1 $_=2<> >' 'ワ'
<EFBFBD> <<3C> >
2015-03-16 18:51:08 +00:00
echo '**'
**
2015-03-17 20:36:12 +00:00
echo '### --rpl % that is a substring of longer --rpl %D'
### --rpl % that is a substring of longer --rpl %D
2015-03-16 18:51:08 +00:00
parallel --plus --rpl '%' --rpl '%D $_=::shell_quote(::dirname($_));' --rpl '%B s:.*/::;s:\.[^/.]+$::;' --rpl '%E s:.*\.::' 'echo {}=%;echo %D={//};echo %B={/.};echo %E={+.};echo %D/%B.%E={}' ::: a.b/c.d/e.f
a.b/c.d/e.f=a.b/c.d/e.f
a.b/c.d=a.b/c.d
e=e
f=f
a.b/c.d/e.f=a.b/c.d/e.f
echo '**'
**
2015-03-17 20:36:12 +00:00
echo '### Disk full'
### Disk full
2015-07-22 06:28:05 +00:00
cat /dev/zero >$SMALLDISK/out; parallel --tmpdir $SMALLDISK echo ::: OK; rm $SMALLDISK/out
2015-03-17 20:36:12 +00:00
cat: write error: No space left on device
parallel: Error: Output is incomplete. Cannot append to buffer file in /mnt/ram. Is the disk full?
parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
2015-03-22 00:51:30 +00:00
echo '**'
**
2015-03-24 23:14:50 +00:00
echo '### bug #44614: --pipepart --header off by one'
### bug #44614: --pipepart --header off by one
seq 10 >/tmp/parallel_44616; parallel --pipepart -a /tmp/parallel_44616 -k --block 5 'echo foo; cat'; parallel --pipepart -a /tmp/parallel_44616 -k --block 2 --regexp --recend 3'\n' 'echo foo; cat'; rm /tmp/parallel_44616
foo
1
2
3
foo
4
5
6
foo
7
8
9
foo
10
foo
1
2
3
foo
4
5
6
7
8
9
10
2015-03-28 11:14:30 +00:00
echo '### TMUX not found'
### TMUX not found
TMUX=not-existing parallel --tmux echo ::: 1
parallel: Error: not-existing not found in $PATH.
2015-04-20 22:08:08 +00:00
echo '**'
**
2015-07-22 06:28:05 +00:00
parallel -j4 --halt 2 ::: 'sleep 1' burnP6 false; killall burnP6 && echo ERROR: burnP6 should be killed
2015-04-20 22:08:08 +00:00
parallel: This job failed:
false
burnP6: no process found
2015-07-22 06:28:05 +00:00
parallel -j4 --halt -2 ::: 'sleep 1' burnP5 true; killall burnP5 && echo ERROR: burnP5 should be killed
2015-04-20 22:08:08 +00:00
parallel: This job succeeded:
true
burnP5: no process found
2015-05-15 06:47:44 +00:00
parallel --halt error echo ::: should not print
parallel: Error: --halt must have 'never', 'soon', or 'now'.
parallel --halt soon echo ::: should not print
parallel: Error: --halt soon must be followed by ,success or ,fail.
parallel --halt now echo ::: should not print
parallel: Error: --halt now must be followed by ,success or ,fail.
2015-05-06 22:40:36 +00:00
echo '**'
**
echo '### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2'
### bug #44995: parallel echo {#} ::: 1 2 ::: 1 2
parallel -k echo {#} ::: 1 2 ::: 1 2
1
2
3
4
2015-05-25 20:07:37 +00:00
echo '**'
**
2015-05-25 22:08:31 +00:00
testquote() { printf '"#&/\n()*=?'"'" | PARALLEL_SHELL=$1 parallel -0 echo; }; export -f testquote; parallel --tag -k testquote ::: ash bash csh dash fdsh fish fizsh ksh ksh93 mksh pdksh posh rbash rc rzsh sash sh static-sh tcsh yash zsh
ash "#&/
ash ()*=?'
bash "#&/
bash ()*=?'
csh "#&/
csh ()*=?'
dash "#&/
dash ()*=?'
fdsh "#&/
fdsh ()*=?'
fish "#&/
fish ()*=?'
fizsh "#&/
fizsh ()*=?'
ksh "#&/
ksh ()*=?'
ksh93 "#&/
ksh93 ()*=?'
mksh "#&/
mksh ()*=?'
pdksh "#&/
pdksh ()*=?'
posh "#&/
posh ()*=?'
2015-06-21 17:40:58 +00:00
rbash "#&/
rbash ()*=?'
2015-05-25 22:08:31 +00:00
rc "#&/
rc ()*=?'
2015-06-21 17:40:58 +00:00
rzsh "#&/
rzsh ()*=?'
2015-05-25 22:08:31 +00:00
sash "#&/
sash ()*=?'
sh "#&/
sh ()*=?'
static-sh "#&/
static-sh ()*=?'
tcsh "#&/
tcsh ()*=?'
yash "#&/
yash ()*=?'
zsh "#&/
zsh ()*=?'
2015-05-25 20:07:37 +00:00
echo '**'
**
2015-08-27 20:28:32 +00:00
echo '### bug #45769: --round-robin --pipepart gives wrong results'
### bug #45769: --round-robin --pipepart gives wrong results
seq 10000 >/tmp/seq10000; parallel -j2 --pipepart -a /tmp/seq10000 --block 14 --round-robin wc | wc -l; rm /tmp/seq10000
2
echo '**'
**
2015-08-30 23:57:14 +00:00
echo '### bug #45842: Do not evaluate {= =} twice'
### bug #45842: Do not evaluate {= =} twice
2016-05-17 00:11:38 +00:00
parallel -k echo '{= $_=++$::G =}' ::: {1001..1004}
2015-08-30 23:57:14 +00:00
1
2
3
4
2016-05-17 00:11:38 +00:00
parallel -k echo '{=1 $_=++$::G =}' ::: {1001..1004}
2015-08-30 23:57:14 +00:00
1
2
3
4
2016-05-17 00:11:38 +00:00
parallel -k echo '{= $_=++$::G =}' ::: {1001..1004} ::: {a..c}
2015-08-30 23:57:14 +00:00
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
2016-05-17 00:11:38 +00:00
parallel -k echo '{=1 $_=++$::G =}' ::: {1001..1004} ::: {a..c}
2015-08-30 23:57:14 +00:00
1
2
3
4
5
6
7
8
9
10
11
12
echo '**'
**
2015-09-12 15:51:43 +00:00
echo '### bug #45939: {2} in {= =} fails'
### bug #45939: {2} in {= =} fails
2016-05-17 00:11:38 +00:00
parallel echo '{= s/O{2}//=}' ::: OOOK
2015-09-12 15:51:43 +00:00
OK
2016-05-17 00:11:38 +00:00
parallel echo '{2}-{=1 s/O{2}//=}' ::: OOOK ::: OK
2015-09-12 15:51:43 +00:00
OK-OK
2015-09-18 20:28:47 +00:00
echo '**'
**
echo '### bug #45998: --pipe to function broken'
### bug #45998: --pipe to function broken
2016-05-17 00:11:38 +00:00
myfunc() { echo $1; cat; }; export -f myfunc; echo OK | parallel --pipe myfunc {#}
2015-09-18 20:28:47 +00:00
1
OK
2015-09-21 23:35:52 +00:00
echo '**'
**
echo 'bug #46016: --joblog should not log when --dryrun'
bug #46016: --joblog should not log when --dryrun
2016-05-17 00:11:38 +00:00
parallel --dryrun --joblog - echo ::: Only_this
2015-09-21 23:35:52 +00:00
echo Only_this
echo '**'
**
2015-09-24 23:29:34 +00:00
echo 'bug #45993: --wd ... should also work when run locally'
bug #45993: --wd ... should also work when run locally
2016-05-17 00:11:38 +00:00
parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail
2016-04-20 21:35:06 +00:00
parallel: Error: Cannot change into non-executable dir /bi: No such file or directory
2016-05-17 00:11:38 +00:00
parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK
2015-09-24 23:29:34 +00:00
/bin
/home/tange/privat/parallel/testsuite
OK
2016-05-17 00:11:38 +00:00
parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK
2015-09-24 23:29:34 +00:00
/
/home/tange/privat/parallel/testsuite
OK
2016-05-17 00:11:38 +00:00
parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK
2015-09-24 23:29:34 +00:00
/tmp
/home/tange/privat/parallel/testsuite
OK
2016-05-17 00:11:38 +00:00
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g'
2016-07-22 16:10:28 +00:00
/home/tange/.parallel/tmp/aspire-0-0
2015-09-24 23:29:34 +00:00
/home/tange/privat/parallel/testsuite
OK
2016-05-17 00:11:38 +00:00
parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK
2015-09-24 23:29:34 +00:00
/home/tange/privat/parallel/testsuite
/home/tange/privat/parallel/testsuite
OK
echo '**'
**
2015-10-17 14:54:15 +00:00
echo 'bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken'
bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken
2015-10-18 13:18:30 +00:00
parallel --bar -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null
2015-10-17 14:54:15 +00:00
1
2
1
2
1
2
2015-10-18 13:18:30 +00:00
parallel --halt now,fail=10% -kj2 --delay 0.1 echo {%} ::: a b ::: c d e
2015-10-17 14:54:15 +00:00
1
2
1
2
1
2
2015-10-18 13:18:30 +00:00
parallel --eta -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null
2015-10-17 14:54:15 +00:00
1
2
1
2
1
2
2015-10-18 13:18:30 +00:00
parallel --shuf -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null
2015-10-17 14:54:15 +00:00
1
2
1
2
1
2
echo '**'
**
echo 'bug #46231: {%} with --pipepart broken. Should give 1+2'
bug #46231: {%} with --pipepart broken. Should give 1+2
2016-05-17 00:11:38 +00:00
seq 10000 > /tmp/num10000; parallel -k --pipepart -ka /tmp/num10000 --block 10k -j2 --delay 0.05 echo {%}; rm /tmp/num10000
2015-10-17 14:54:15 +00:00
1
2
1
2
1
2015-10-17 15:10:04 +00:00
echo '**'
**
2015-10-18 09:44:02 +00:00
echo '{##} bug #45841: Replacement string for total no of jobs'
{##} bug #45841: Replacement string for total no of jobs
2015-11-29 23:47:21 +00:00
parallel -k --plus echo {##} ::: {a..j}; parallel -k 'echo {= $::G++ > 3 and ($_=$Global::JobQueue->total_jobs());=}' ::: {1..10}
2015-10-18 09:44:02 +00:00
10
10
10
10
10
10
10
10
10
10
1
2
3
4
10
10
10
10
10
10
2015-11-29 23:47:21 +00:00
parallel -k -N7 --plus echo {#} {##} ::: {1..14}
2015-10-18 13:18:30 +00:00
1 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2
2015-11-29 23:47:21 +00:00
parallel -k -N7 --plus echo {#} {##} ::: {1..15}
2015-10-18 13:18:30 +00:00
1 3 3 3 3 3 3 3
2 3 3 3 3 3 3 3
3 3
2016-01-23 08:54:05 +00:00
parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15}
2015-10-18 13:18:30 +00:00
1 15 15
2 15 15
3 15 15
4 15 15
5 15 15
6 15 15
7 15 15
8 15
2015-10-18 09:44:02 +00:00
echo '**'
**
2016-01-28 22:45:11 +00:00
echo 'bug #47002: --tagstring with -d \n\n'
bug #47002: --tagstring with -d \n\n
2016-05-29 21:06:15 +00:00
(seq 3;echo;seq 4) | parallel -k -d '\n\n' --tagstring {%} echo ABC';'echo
2016-01-28 22:45:11 +00:00
1 ABC
1 1
1 2
1 3
2 ABC
2 1
2 2
2 3
2 4
2
echo '**'
**
2016-02-19 21:15:08 +00:00
echo 'bug #47086: [PATCH] Initialize total_completed from joblog'
bug #47086: [PATCH] Initialize total_completed from joblog
rm -f /tmp/parallel-47086; parallel -j1 --joblog /tmp/parallel-47086 --halt now,fail=1 echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0; parallel -j1 --joblog /tmp/parallel-47086 --halt now,fail=1 --resume echo '{= $_=$Global::total_completed =};exit {}' ::: 0 0 0 1 0 0
0
1
2
3
4
5
parallel: This job failed:
echo 3;exit 1
echo '**'
**
2016-03-26 09:35:13 +00:00
echo 'bug #47290: xargs: Warning: a NUL character occurred in the input'
bug #47290: xargs: Warning: a NUL character occurred in the input
perl -e 'print "foo\0not printed"' | parallel echo
foo
parallel: Warning: a NUL character occurred in the input.
parallel: Warning: It cannot be passed through in the argument list.
parallel: Warning: Did you mean to use the --null option?
echo '**'
**
2016-05-17 00:11:38 +00:00
echo '### Test --shellquote'
### Test --shellquote
parallel --tag -q -k {} -c perl\ -e\ \'print\ pack\(\"c\*\",1..255\)\'\ \|\ parallel\ -0\ --shellquote ::: ash bash csh dash fish fizsh ksh ksh93 lksh mksh pdksh posh rzsh sash sh static-sh tcsh yash zsh csh tcsh
ash \ \ \ \ \ \ \ \ '
ash '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
bash \ \ \ \ \ \ \ \ '
bash '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
csh \ \ \ \ \ \ \ \ "\
csh "\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
dash \ \ \ \ \ \ \ \ '
dash '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
fish \ \ \ \ \ \ \ \ '
fish '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
fizsh \ \ \ \ \ \ \ \ '
fizsh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
ksh \ \ \ \ \ \ \ \ '
ksh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
ksh93 \ \ \ \ \ \ \ \ '
ksh93 '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
lksh \ \ \ \ \ \ \ \ '
lksh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
mksh \ \ \ \ \ \ \ \ '
mksh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
pdksh \ \ \ \ \ \ \ \ '
pdksh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
posh \ \ \ \ \ \ \ \ '
posh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
rzsh \ \ \ \ \ \ \ \ '
rzsh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
sash \ \ \ \ \ \ \ \ '
sash '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
sh \ \ \ \ \ \ \ \ '
sh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
static-sh \ \ \ \ \ \ \ \ '
static-sh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
tcsh \ \ \ \ \ \ \ \ "\
tcsh "\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
yash \ \ \ \ \ \ \ \ '
yash '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
zsh \ \ \ \ \ \ \ \ '
zsh '\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
csh \ \ \ \ \ \ \ \ "\
csh "\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
tcsh \ \ \ \ \ \ \ \ "\
tcsh "\ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~ <> <7F> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C> \<5C>
echo '**'
**
echo xargs compatibility
xargs compatibility
echo '### Test -L -l and --max-lines'
### Test -L -l and --max-lines
(echo a_b;echo c) | parallel -km -L2 echo
a_b
c
(echo a_b;echo c) | parallel -k -L2 echo
a_b c
(echo a_b;echo c) | xargs -L2 echo
a_b c
echo '### xargs -L1 echo'
### xargs -L1 echo
(echo a_b;echo c) | parallel -km -L1 echo
a_b
c
(echo a_b;echo c) | parallel -k -L1 echo
a_b
c
(echo a_b;echo c) | xargs -L1 echo
a_b
c
echo 'Lines ending in space should continue on next line'
Lines ending in space should continue on next line
echo '### xargs -L1 echo'
### xargs -L1 echo
(echo a_b' ';echo c;echo d) | parallel -km -L1 echo
a_b c
d
(echo a_b' ';echo c;echo d) | parallel -k -L1 echo
a_b c
d
(echo a_b' ';echo c;echo d) | xargs -L1 echo
a_b c
d
echo '### xargs -L2 echo'
### xargs -L2 echo
(echo a_b' ';echo c;echo d;echo e) | parallel -km -L2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | parallel -k -L2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | xargs -L2 echo
a_b c d
e
echo '### xargs -l echo'
### xargs -l echo
(echo a_b' ';echo c;echo d;echo e) | parallel -l -km echo # This behaves wrong
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | parallel -l -k echo # This behaves wrong
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | xargs -l echo
a_b c
d
e
echo '### xargs -l2 echo'
### xargs -l2 echo
(echo a_b' ';echo c;echo d;echo e) | parallel -km -l2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | parallel -k -l2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | xargs -l2 echo
a_b c d
e
echo '### xargs -l1 echo'
### xargs -l1 echo
(echo a_b' ';echo c;echo d;echo e) | parallel -km -l1 echo
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | parallel -k -l1 echo
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | xargs -l1 echo
a_b c
d
e
echo '### xargs --max-lines=2 echo'
### xargs --max-lines=2 echo
(echo a_b' ';echo c;echo d;echo e) | parallel -km --max-lines 2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | parallel -k --max-lines 2 echo
a_b c d
e
(echo a_b' ';echo c;echo d;echo e) | xargs --max-lines=2 echo
a_b c d
e
echo '### xargs --max-lines echo'
### xargs --max-lines echo
(echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -km echo # This behaves wrong
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -k echo # This behaves wrong
a_b c
d
e
(echo a_b' ';echo c;echo d;echo e) | xargs --max-lines echo
a_b c
d
e
echo '### test too long args'
### test too long args
perl -e 'print "z"x1000000' | parallel echo 2>&1
2016-07-22 16:10:28 +00:00
parallel: Error: Command line too long (1000005 >= 65528) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
2016-05-17 00:11:38 +00:00
perl -e 'print "z"x1000000' | xargs echo 2>&1
xargs: argument line too long
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10 echo
1 2
3 4
5 6
7 8
9 10
parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout xargs -s 10 echo
1 2
3 4
5 6
7 8
xargs: argument line too long
9 10
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -kX -s 10 echo
1 2
3 4
5 6
7 8
9 10
parallel: Error: Command line too long (1000007 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
echo '### Test -x'
### Test -x
(seq 1 10; echo 12345; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo
1 2
3 4
5 6
7 8
9 10
parallel: Error: Command line too long (10 >= 10) at input 0: 12345
(seq 1 10; echo 12345; seq 12 15) | stdout parallel -j1 -kX -s 10 -x echo
1 2
3 4
5 6
7 8
9 10
parallel: Error: Command line too long (10 >= 10) at input 0: 12345
(seq 1 10; echo 12345; seq 12 15) | stdout xargs -s 10 -x echo
1 2
3 4
5 6
xargs: argument line too long
7 8
(seq 1 10; echo 1234; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
(seq 1 10; echo 1234; seq 12 15) | stdout parallel -j1 -kX -s 10 -x echo
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
(seq 1 10; echo 1234; seq 12 15) | stdout xargs -s 10 -x echo
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
echo '### Test -a and --arg-file: Read input from file instead of stdin'
### Test -a and --arg-file: Read input from file instead of stdin
seq 1 10 >/tmp/parallel_$$-1; parallel -k -a /tmp/parallel_$$-1 echo; rm /tmp/parallel_$$-1
1
2
3
4
5
6
7
8
9
10
seq 1 10 >/tmp/parallel_$$-2; parallel -k --arg-file /tmp/parallel_$$-2 echo; rm /tmp/parallel_$$-2
1
2
3
4
5
6
7
8
9
10
echo '### Test -i and --replace: Replace with argument'
### Test -i and --replace: Replace with argument
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce
replace
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce
replace
(echo a; echo END; echo b) | parallel -k -i+ -eEND echo repl+ce
replace
(echo e; echo END; echo b) | parallel -k -i'*' -eEND echo r'*'plac'*'
replace
(echo a; echo END; echo b) | parallel -k --replace + -eEND echo repl+ce
replace
(echo a; echo END; echo b) | parallel -k --replace== -eEND echo repl=ce
replace
(echo a; echo END; echo b) | parallel -k --replace = -eEND echo repl=ce
replace
(echo a; echo END; echo b) | parallel -k --replace=^ -eEND echo repl^ce
replace
(echo a; echo END; echo b) | parallel -k -I^ -eEND echo repl^ce
replace
echo '### Test -E: Artificial end-of-file'
### Test -E: Artificial end-of-file
(echo include this; echo END; echo not this) | parallel -k -E END echo
include this
(echo include this; echo END; echo not this) | parallel -k -EEND echo
include this
echo '### Test -e and --eof: Artificial end-of-file'
### Test -e and --eof: Artificial end-of-file
(echo include this; echo END; echo not this) | parallel -k -e END echo
include this
(echo include this; echo END; echo not this) | parallel -k -eEND echo
include this
(echo include this; echo END; echo not this) | parallel -k --eof=END echo
include this
(echo include this; echo END; echo not this) | parallel -k --eof END echo
include this
echo '### Test -n and --max-args: Max number of args per line (only with -X and -m)'
### Test -n and --max-args: Max number of args per line (only with -X and -m)
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 -m echo
line 1
line 2
line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 -m echo
line 1 line 1
line 2
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 -X echo
line 1
line 2
line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 -X echo
line 1 line 1
line 2
(echo line 1;echo line 2;echo line 3) | parallel -k -n1 echo
line 1
line 2
line 3
(echo line 1;echo line 1;echo line 2) | parallel -k -n2 echo
line 1 line 1
line 2
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args=1 -X echo
line 1
line 2
line 3
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 -X echo
line 1
line 2
line 3
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args=2 -X echo
line 1 line 1
line 2
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 -X echo
line 1 line 1
line 2
(echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 echo
line 1
line 2
line 3
(echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 echo
line 1 line 1
line 2
echo '### Test --max-procs and -P: Number of processes'
### Test --max-procs and -P: Number of processes
seq 1 10 | parallel -k --max-procs +0 echo max proc
max proc 1
max proc 2
max proc 3
max proc 4
max proc 5
max proc 6
max proc 7
max proc 8
max proc 9
max proc 10
seq 1 10 | parallel -k -P 200% echo 200% proc
200% proc 1
200% proc 2
200% proc 3
200% proc 4
200% proc 5
200% proc 6
200% proc 7
200% proc 8
200% proc 9
200% proc 10
echo '### Test --delimiter and -d: Delimiter instead of newline'
### Test --delimiter and -d: Delimiter instead of newline
echo '# Yes there is supposed to be an extra newline for -d N'
# Yes there is supposed to be an extra newline for -d N
echo line 1Nline 2Nline 3 | parallel -k -d N echo This is
This is line 1
This is line 2
This is line 3
echo line 1Nline 2Nline 3 | parallel -k --delimiter N echo This is
This is line 1
This is line 2
This is line 3
printf "delimiter NUL line 1\0line 2\0line 3" | parallel -k -d '\0' echo
delimiter NUL line 1
line 2
line 3
printf "delimiter TAB line 1\tline 2\tline 3" | parallel -k --delimiter '\t' echo
delimiter TAB line 1
line 2
line 3
echo '### Test --max-chars and -s: Max number of chars in a line'
### Test --max-chars and -s: Max number of chars in a line
(echo line 1;echo line 1;echo line 2) | parallel -k --max-chars 25 -X echo
line 1 line 1
line 2
(echo line 1;echo line 1;echo line 2) | parallel -k -s 25 -X echo
line 1 line 1
line 2
echo '### Test --no-run-if-empty and -r: This should give no output'
### Test --no-run-if-empty and -r: This should give no output
echo " " | parallel -r echo
echo " " | parallel --no-run-if-empty echo
echo '### Test --help and -h: Help output (just check we get the same amount of lines)'
### Test --help and -h: Help output (just check we get the same amount of lines)
echo Output from -h and --help
Output from -h and --help
parallel -h | wc -l
37
parallel --help | wc -l
37
echo '### Test --version: Version output (just check we get the same amount of lines)'
### Test --version: Version output (just check we get the same amount of lines)
parallel --version | wc -l
11
echo '### Test --verbose and -t'
### Test --verbose and -t
(echo b; echo c; echo f) | parallel -k -t echo {}ar 2>&1 >/dev/null
echo bar
echo car
echo far
(echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null
echo bar
echo car
echo far
echo '### Test --show-limits'
### Test --show-limits
(echo b; echo c; echo f) | parallel -k --show-limits echo {}ar
Maximal size of command: 131049
2016-07-22 16:10:28 +00:00
Maximal used size of command: 65528
2016-05-17 00:11:38 +00:00
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar
car
far
(echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar
Maximal size of command: 131049
Maximal used size of command: 100
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar car far
echo '### Test empty line as input'
### Test empty line as input
echo | parallel echo empty input line
empty input line
echo '### Tests if (cat | sh) works'
### Tests if (cat | sh) works
perl -e 'for(1..25) {print "echo a $_; echo b $_\n"}' | parallel 2>&1 | sort
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9
echo '### Test if xargs-mode works'
### Test if xargs-mode works
perl -e 'for(1..25) {print "a $_\nb $_\n"}' | parallel echo 2>&1 | sort
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9
echo '### Test -q'
### Test -q
parallel -kq perl -e '$ARGV[0]=~/^\S+\s+\S+$/ and print $ARGV[0],"\n"' ::: "a b" c "d e f" g "h i"
a b
h i
echo '### Test -q {#}'
### Test -q {#}
parallel -kq echo {#} ::: a b
1
2
parallel -kq echo {\#} ::: a b
1
2
parallel -kq echo {\\#} ::: a b
{\#} a
{\#} b
echo '### Test long commands do not take up all memory'
### Test long commands do not take up all memory
seq 1 100 | parallel -j0 -qv perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2>/dev/null | sort
1
10
100
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30
31
32
33
34
35
36
37
38
39
4
40
41
42
43
44
45
46
47
48
49
5
50
51
52
53
54
55
56
57
58
59
6
60
61
62
63
64
65
66
67
68
69
7
70
71
72
73
74
75
76
77
78
79
8
80
81
82
83
84
85
86
87
88
89
9
90
91
92
93
94
95
96
97
98
99
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 1
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 10
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 100
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 11
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 12
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 13
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 14
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 15
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 16
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 17
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 18
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 19
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 2
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 20
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 21
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 22
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 23
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 24
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 25
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 26
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 27
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 28
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 29
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 3
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 30
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 31
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 32
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 33
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 34
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 35
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 36
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 37
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 38
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 39
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 4
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 40
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 41
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 42
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 43
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 44
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 45
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 46
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 47
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 48
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 49
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 5
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 50
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 51
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 52
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 53
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 54
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 55
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 56
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 57
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 58
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 59
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 6
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 60
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 61
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 62
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 63
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 64
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 65
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 66
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 67
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 68
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 69
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 7
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 70
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 71
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 72
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 73
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 74
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 75
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 76
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 77
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 78
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 79
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 8
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 80
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 81
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 82
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 83
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 84
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 85
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 86
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 87
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 88
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 89
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 9
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 90
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 91
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 92
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 93
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 94
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 95
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 96
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98
perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99
echo '### Test 0-arguments'
### Test 0-arguments
seq 1 2 | parallel -k -n0 echo n0
n0
n0
seq 1 2 | parallel -k -L0 echo L0
L0
L0
seq 1 2 | parallel -k -N0 echo N0
N0
N0
echo '### Because of --tollef -l, then -l0 == -l1, sorry'
### Because of --tollef -l, then -l0 == -l1, sorry
seq 1 2 | parallel -k -l0 echo l0
l0 1
l0 2
echo '### Test replace {}'
### Test replace {}
seq 1 2 | parallel -k -N0 echo replace {} curlies
replace curlies
replace curlies
echo '### Test arguments on commandline'
### Test arguments on commandline
parallel -k -N0 echo args on cmdline ::: 1 2
args on cmdline
args on cmdline
echo '### Test --nice locally'
### Test --nice locally
parallel --nice 1 -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b
PAR=a bash -c "echo \$PAR b"
a b
echo '### Test distribute arguments at EOF to 2 jobslots'
### Test distribute arguments at EOF to 2 jobslots
seq 1 92 | parallel -j+0 -kX -s 100 echo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
2016-07-22 16:10:28 +00:00
66 67 68 69
70 71 72 73
74 75 76 77
78 79 80 81
82 83 84 85
86 87 88 89
90 91 92
2016-05-17 00:11:38 +00:00
echo '### Test distribute arguments at EOF to 5 jobslots'
### Test distribute arguments at EOF to 5 jobslots
seq 1 92 | parallel -j+3 -kX -s 100 echo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
2016-07-22 16:10:28 +00:00
66 67 68
69 70 71
72 73 74
75 76 77
78 79 80
81 82 83
84 85 86
87 88 89
2016-05-17 00:11:38 +00:00
90 91 92
echo '### Test distribute arguments at EOF to infinity jobslots'
### Test distribute arguments at EOF to infinity jobslots
seq 1 92 | parallel -j0 -kX -s 100 echo 2>/dev/null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
echo '### Test -N is not broken by distribution - single line'
### Test -N is not broken by distribution - single line
seq 9 | parallel -N 10 echo
1 2 3 4 5 6 7 8 9
echo '### Test -N is not broken by distribution - two lines'
### Test -N is not broken by distribution - two lines
seq 19 | parallel -k -N 10 echo
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19
echo '### Test -N context replace'
### Test -N context replace
seq 19 | parallel -k -N 10 echo a{}b
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
a11b a12b a13b a14b a15b a16b a17b a18b a19b
echo '### Test -L context replace'
### Test -L context replace
seq 19 | parallel -k -L 10 echo a{}b
a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
a11b a12b a13b a14b a15b a16b a17b a18b a19b
echo '**'
**
echo '### Test {} multiple times in different commands'
### Test {} multiple times in different commands
seq 10 | parallel -v -Xj1 echo {} \; echo {}
echo 1 2 3 4 5 6 7 8 9 10 ; echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
echo '### Test of -X {1}-{2} with multiple input sources'
### Test of -X {1}-{2} with multiple input sources
parallel -j1 -kX echo {1}-{2} ::: a ::: b
a-b
parallel -j2 -kX echo {1}-{2} ::: a b ::: c d
a-c
b-c
parallel -j2 -kX echo {1}-{2} ::: a b c ::: d e f
a-d
b-f
parallel -j0 -kX echo {1}-{2} ::: a b c ::: d e f
a-d
a-e
a-f
b-d
b-e
b-f
c-d
c-e
c-f
echo '### Test of -X {}-{.} with multiple input sources'
### Test of -X {}-{.} with multiple input sources
parallel -j1 -kX echo {}-{.} ::: a ::: b
a-a b-b
parallel -j2 -kX echo {}-{.} ::: a b ::: c d
a-a c-c a-a d-d
b-b c-c b-b d-d
parallel -j2 -kX echo {}-{.} ::: a b c ::: d e f
a-a d-d a-a e-e a-a f-f b-b d-d b-b e-e
b-b f-f c-c d-d c-c e-e c-c f-f
parallel -j0 -kX echo {}-{.} ::: a b c ::: d e f
a-a d-d
a-a e-e
a-a f-f
b-b d-d
b-b e-e
b-b f-f
c-c d-d
c-c e-e
c-c f-f
echo '### Test of -r with --pipe - the first should give an empty line. The second should not.'
### Test of -r with --pipe - the first should give an empty line. The second should not.
echo | parallel -j2 -N1 --pipe cat | wc -l
1
echo | parallel -r -j2 -N1 --pipe cat | wc -l
0
echo '### Test --tty'
### Test --tty
seq 0.1 0.1 0.5 | parallel -j1 --tty tty\;sleep
/dev/tty
/dev/tty
/dev/tty
/dev/tty
/dev/tty
echo '**'
**
echo '### Test bugfix if no command given'
### Test bugfix if no command given
(echo echo; seq 1 5; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10
1 2
/bin/bash: 3: command not found
parallel: Error: Command line too long (1000002 >= 10) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
echo '**'
**
echo "### Test --results"
### Test --results
mkdir -p /tmp/parallel_results_test; parallel -k --results /tmp/parallel_results_test/testA echo {1} {2} ::: I II ::: III IIII; ls /tmp/parallel_results_test/testA/*/*/*/*/*; rm -rf /tmp/parallel_results_test/testA*
I III
I IIII
II III
II IIII
/tmp/parallel_results_test/testA/1/I/2/III/seq
/tmp/parallel_results_test/testA/1/I/2/III/stderr
/tmp/parallel_results_test/testA/1/I/2/III/stdout
/tmp/parallel_results_test/testA/1/I/2/IIII/seq
/tmp/parallel_results_test/testA/1/I/2/IIII/stderr
/tmp/parallel_results_test/testA/1/I/2/IIII/stdout
/tmp/parallel_results_test/testA/1/II/2/III/seq
/tmp/parallel_results_test/testA/1/II/2/III/stderr
/tmp/parallel_results_test/testA/1/II/2/III/stdout
/tmp/parallel_results_test/testA/1/II/2/IIII/seq
/tmp/parallel_results_test/testA/1/II/2/IIII/stderr
/tmp/parallel_results_test/testA/1/II/2/IIII/stdout
echo "### Test --res"
### Test --res
mkdir -p /tmp/parallel_results_test; parallel -k --res /tmp/parallel_results_test/testD echo {1} {2} ::: I II ::: III IIII; ls /tmp/parallel_results_test/testD/*/*/*/*/*; rm -rf /tmp/parallel_results_test/testD*
I III
I IIII
II III
II IIII
/tmp/parallel_results_test/testD/1/I/2/III/seq
/tmp/parallel_results_test/testD/1/I/2/III/stderr
/tmp/parallel_results_test/testD/1/I/2/III/stdout
/tmp/parallel_results_test/testD/1/I/2/IIII/seq
/tmp/parallel_results_test/testD/1/I/2/IIII/stderr
/tmp/parallel_results_test/testD/1/I/2/IIII/stdout
/tmp/parallel_results_test/testD/1/II/2/III/seq
/tmp/parallel_results_test/testD/1/II/2/III/stderr
/tmp/parallel_results_test/testD/1/II/2/III/stdout
/tmp/parallel_results_test/testD/1/II/2/IIII/seq
/tmp/parallel_results_test/testD/1/II/2/IIII/stderr
/tmp/parallel_results_test/testD/1/II/2/IIII/stdout
echo "### Test --result"
### Test --result
mkdir -p /tmp/parallel_results_test; parallel -k --result /tmp/parallel_results_test/testE echo {1} {2} ::: I II ::: III IIII; ls /tmp/parallel_results_test/testE/*/*/*/*/*; rm -rf /tmp/parallel_results_test/testE*
I III
I IIII
II III
II IIII
/tmp/parallel_results_test/testE/1/I/2/III/seq
/tmp/parallel_results_test/testE/1/I/2/III/stderr
/tmp/parallel_results_test/testE/1/I/2/III/stdout
/tmp/parallel_results_test/testE/1/I/2/IIII/seq
/tmp/parallel_results_test/testE/1/I/2/IIII/stderr
/tmp/parallel_results_test/testE/1/I/2/IIII/stdout
/tmp/parallel_results_test/testE/1/II/2/III/seq
/tmp/parallel_results_test/testE/1/II/2/III/stderr
/tmp/parallel_results_test/testE/1/II/2/III/stdout
/tmp/parallel_results_test/testE/1/II/2/IIII/seq
/tmp/parallel_results_test/testE/1/II/2/IIII/stderr
/tmp/parallel_results_test/testE/1/II/2/IIII/stdout
echo "### Test --results --header :"
### Test --results --header :
mkdir -p /tmp/parallel_results_test; parallel -k --header : --results /tmp/parallel_results_test/testB echo {1} {2} ::: a I II ::: b III IIII; ls /tmp/parallel_results_test/testB/*/*/*/*/*; rm -rf /tmp/parallel_results_test/testB*
I III
I IIII
II III
II IIII
/tmp/parallel_results_test/testB/a/I/b/III/seq
/tmp/parallel_results_test/testB/a/I/b/III/stderr
/tmp/parallel_results_test/testB/a/I/b/III/stdout
/tmp/parallel_results_test/testB/a/I/b/IIII/seq
/tmp/parallel_results_test/testB/a/I/b/IIII/stderr
/tmp/parallel_results_test/testB/a/I/b/IIII/stdout
/tmp/parallel_results_test/testB/a/II/b/III/seq
/tmp/parallel_results_test/testB/a/II/b/III/stderr
/tmp/parallel_results_test/testB/a/II/b/III/stdout
/tmp/parallel_results_test/testB/a/II/b/IIII/seq
/tmp/parallel_results_test/testB/a/II/b/IIII/stderr
/tmp/parallel_results_test/testB/a/II/b/IIII/stdout
echo "### Test --results --header : named - a/b swapped"
### Test --results --header : named - a/b swapped
mkdir -p /tmp/parallel_results_test; parallel -k --header : --results /tmp/parallel_results_test/testC echo {a} {b} ::: b III IIII ::: a I II; ls /tmp/parallel_results_test/testC/*/*/*/*/*; rm -rf /tmp/parallel_results_test/testC*
I III
II III
I IIII
II IIII
/tmp/parallel_results_test/testC/a/I/b/III/seq
/tmp/parallel_results_test/testC/a/I/b/III/stderr
/tmp/parallel_results_test/testC/a/I/b/III/stdout
/tmp/parallel_results_test/testC/a/I/b/IIII/seq
/tmp/parallel_results_test/testC/a/I/b/IIII/stderr
/tmp/parallel_results_test/testC/a/I/b/IIII/stdout
/tmp/parallel_results_test/testC/a/II/b/III/seq
/tmp/parallel_results_test/testC/a/II/b/III/stderr
/tmp/parallel_results_test/testC/a/II/b/III/stdout
/tmp/parallel_results_test/testC/a/II/b/IIII/seq
/tmp/parallel_results_test/testC/a/II/b/IIII/stderr
/tmp/parallel_results_test/testC/a/II/b/IIII/stdout
echo "### Test --results --header : piped"
### Test --results --header : piped
mkdir -p /tmp/parallel_results_test; (echo Col; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') | parallel --header : --result /tmp/parallel_results_test/testF true; find /tmp/parallel_results_test/testF/*/*/* | sort; rm -rf /tmp/parallel_results_test/testF*
/tmp/parallel_results_test/testF/Col/backslash\\tab/2
/tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof
/tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/seq
/tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stderr
/tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stdout
parallel: Warning: a NUL character occurred in the input.
parallel: Warning: It cannot be passed through in the argument list.
parallel: Warning: Did you mean to use the --null option?
echo "### Test --results --header : piped - non-existing column header"
### Test --results --header : piped - non-existing column header
mkdir -p /tmp/parallel_results_test; (printf "Col1\t\n"; printf "v1\tv2\tv3\n"; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') | parallel --header : --result /tmp/parallel_results_test/testG true; find /tmp/parallel_results_test/testG/ | sort; rm -rf /tmp/parallel_results_test/testG*
/tmp/parallel_results_test/testG/
/tmp/parallel_results_test/testG/Col1
/tmp/parallel_results_test/testG/Col1/backslash\\tab
/tmp/parallel_results_test/testG/Col1/backslash\\tab/2
/tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof
/tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/seq
/tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stderr
/tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stdout
/tmp/parallel_results_test/testG/Col1/v1
/tmp/parallel_results_test/testG/Col1/v1/2
/tmp/parallel_results_test/testG/Col1/v1/2/v2
/tmp/parallel_results_test/testG/Col1/v1/2/v2/3
/tmp/parallel_results_test/testG/Col1/v1/2/v2/3/v3
/tmp/parallel_results_test/testG/Col1/v1/2/v2/3/v3/seq
/tmp/parallel_results_test/testG/Col1/v1/2/v2/3/v3/stderr
/tmp/parallel_results_test/testG/Col1/v1/2/v2/3/v3/stdout
parallel: Warning: a NUL character occurred in the input.
parallel: Warning: It cannot be passed through in the argument list.
parallel: Warning: Did you mean to use the --null option?
echo '**'
**
echo "bug #34958: --pipe with record size measured in lines"
bug #34958: --pipe with record size measured in lines
seq 10 | parallel -k --pipe -l 4 cat\;echo bug 34958-2
1
2
3
4
5
6
7
8
bug 34958-2
9
10
bug 34958-2
echo '**'
**
echo "bug #37325: Inefficiency of --pipe -L"
bug #37325: Inefficiency of --pipe -L
seq 2000 | parallel -k --pipe --block 1k -L 4 wc\;echo FOO | uniq
276 276 996
FOO
248 248 992
FOO
248 248 992
FOO
244 244 993
FOO
200 200 1000
FOO
200 200 1000
FOO
200 200 1000
FOO
200 200 1000
FOO
184 184 920
FOO
echo '**'
**
echo "bug #34958: --pipe with record size measured in lines"
bug #34958: --pipe with record size measured in lines
seq 10 | parallel -k --pipe -L 4 cat\;echo bug 34958-1
1
2
3
4
5
6
7
8
bug 34958-1
9
10
bug 34958-1
echo '**'
**
echo "### bug #41482: --pipe --compress blocks at different -j/seq combinations"
### bug #41482: --pipe --compress blocks at different -j/seq combinations
seq 1 | parallel -k -j2 --compress -N1 -L1 --pipe cat; echo echo 1-4 + 1-4
1
echo 1-4 + 1-4
seq 4 | parallel -k -j3 --compress -N1 -L1 -vv echo; echo 4 times wc to stderr to stdout
echo 1
2015-04-09 23:20:51 +00:00
1
2016-05-17 00:11:38 +00:00
echo 2
2
echo 3
3
echo 4
4
4 times wc to stderr to stdout
(seq 4 | parallel -k -j3 --compress -N1 -L1 --pipe wc '>&2') 2>&1 >/dev/null
1 1 2
1 1 2
1 1 2
1 1 2
echo 1 2 3 4
1 2 3 4
seq 4 | parallel -k -j3 --compress echo; echo 1 2 3 4
1
2
3
4
1 2 3 4
seq 4 | parallel -k -j1 --compress echo; echo 1 2
1
2
3
4
1 2
seq 2 | parallel -k -j1 --compress echo; echo 1 2 3
1
2
1 2 3
seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat; echo '**'
1
2
3
**
echo '### --pipe without command'
### --pipe without command
seq -w 10 | stdout parallel --pipe
parallel: Error: --pipe/--pipepart must have a command to pipe into (e.g. 'cat').
echo '**'
**
echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty'
### bug #36260: {n} expansion in --colsep files fails for empty fields if all following fields are also empty
echo A,B,, | parallel --colsep , echo {1}{3}{2}
AB
echo '**'
**
echo '### bug #34422: parallel -X --eta crashes with div by zero'
### bug #34422: parallel -X --eta crashes with div by zero
# We do not care how long it took
seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG'
Computers / CPU cores / Max jobs to run
2016-07-22 16:10:28 +00:00
1:local / 8 / 2
2016-05-17 00:11:38 +00:00
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
2016-05-25 22:13:48 +00:00
echo '**'
**
echo '### --pipepart autoset --block => 10*joblots'
### --pipepart autoset --block => 10*joblots
seq 1000 > /run/shm/parallel$$; parallel -j2 -k --pipepart echo {#} :::: /run/shm/parallel$$; rm /run/shm/parallel$$
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
echo '**'
**
2016-06-27 19:00:19 +00:00
echo '### bug #48295: --results should be dynamic like --wd'
### bug #48295: --results should be dynamic like --wd
rm -rf /tmp/parallel-48295; parallel --results /tmp/parallel-48295/{1} -k echo ::: A B ::: a b; find /tmp/parallel-48295 -type f | sort
A a
A b
B a
B b
/tmp/parallel-48295/A/1/A/2/a/seq
/tmp/parallel-48295/A/1/A/2/a/stderr
/tmp/parallel-48295/A/1/A/2/a/stdout
/tmp/parallel-48295/A/1/A/2/b/seq
/tmp/parallel-48295/A/1/A/2/b/stderr
/tmp/parallel-48295/A/1/A/2/b/stdout
/tmp/parallel-48295/B/1/B/2/a/seq
/tmp/parallel-48295/B/1/B/2/a/stderr
/tmp/parallel-48295/B/1/B/2/a/stdout
/tmp/parallel-48295/B/1/B/2/b/seq
/tmp/parallel-48295/B/1/B/2/b/stderr
/tmp/parallel-48295/B/1/B/2/b/stdout
echo '**'
2016-06-28 16:13:35 +00:00
**
bash -O extglob -c '. `which env_parallel.bash`; _longopt () { case "$prev" in --+([-a-z0-9_])) echo foo;; esac; }; env_parallel echo ::: env_parallel 2>&1 '
env_parallel
echo '**'
2016-06-27 19:00:19 +00:00
**
2016-05-17 00:11:38 +00:00
### 1 .par file from --files expected
0