mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 22:17:54 +00:00
parallel: Fixed: csh length before base64 quoting too high.
This commit is contained in:
parent
499dfe9acb
commit
e57ec6deec
|
@ -236,7 +236,7 @@ New in this release:
|
||||||
|
|
||||||
* --fifo now works in csh, too.
|
* --fifo now works in csh, too.
|
||||||
|
|
||||||
* <<afventer opdatering>> CIDER: a pipeline for detecting waves of coordinated transcriptional regulation in gene expression time-course data http://biorxiv.org/content/biorxiv/early/2015/03/17/012518.full.pdf
|
* GNU Parallel was cited in: DockBench: An Integrated Informatic Platform Bridging the Gap between the Robust Validation of Docking Protocols and Virtual Screening Simulations http://www.mdpi.com/1420-3049/20/6/9977
|
||||||
|
|
||||||
* <<Har angiveligt submittet ny version - afventer opdatering>> GNU Parallel was used (unfortunately without citation) in: MUGBAS: a species free gene-based programme suite for post-GWAS analysis http://www.ncbi.nlm.nih.gov/pubmed/25765345
|
* <<Har angiveligt submittet ny version - afventer opdatering>> GNU Parallel was used (unfortunately without citation) in: MUGBAS: a species free gene-based programme suite for post-GWAS analysis http://www.ncbi.nlm.nih.gov/pubmed/25765345
|
||||||
|
|
||||||
|
|
|
@ -3221,7 +3221,7 @@ sub killall {
|
||||||
# Wait up to 200 ms between each
|
# Wait up to 200 ms between each
|
||||||
|
|
||||||
$Global::start_no_new_jobs ||= 1;
|
$Global::start_no_new_jobs ||= 1;
|
||||||
$Global::killall = 1;
|
$Global::killall ||= 1;
|
||||||
# pids of the all children and (grand*)children
|
# pids of the all children and (grand*)children
|
||||||
# before we start the blood bath
|
# before we start the blood bath
|
||||||
my @family_pids = family_pids(keys %Global::running);
|
my @family_pids = family_pids(keys %Global::running);
|
||||||
|
@ -6800,7 +6800,8 @@ sub sshlogin_wrap {
|
||||||
my $remote_command = $pwd.$envset.$bashfuncset.
|
my $remote_command = $pwd.$envset.$bashfuncset.
|
||||||
'@ARGV="'.::perl_quote_scalar($command).'";'. monitor_parent_sshd_script();
|
'@ARGV="'.::perl_quote_scalar($command).'";'. monitor_parent_sshd_script();
|
||||||
$quoted_remote_command = "perl -e ".::shell_quote_scalar($remote_command);
|
$quoted_remote_command = "perl -e ".::shell_quote_scalar($remote_command);
|
||||||
if(length $quoted_remote_command > 999
|
my $dq_remote_command = ::shell_quote_scalar($quoted_remote_command);
|
||||||
|
if(length $dq_remote_command > 999
|
||||||
or
|
or
|
||||||
not $csh_friendly
|
not $csh_friendly
|
||||||
or
|
or
|
||||||
|
@ -6810,7 +6811,7 @@ sub sshlogin_wrap {
|
||||||
$quoted_remote_command = "perl -e \\''".base64_zip_eval()."'\\' ".
|
$quoted_remote_command = "perl -e \\''".base64_zip_eval()."'\\' ".
|
||||||
join" ",string_zip_base64($remote_command);
|
join" ",string_zip_base64($remote_command);
|
||||||
} else {
|
} else {
|
||||||
$quoted_remote_command = ::shell_quote_scalar($quoted_remote_command);
|
$quoted_remote_command = $dq_remote_command;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $sshcmd = $sshlogin->sshcommand();
|
my $sshcmd = $sshlogin->sshcommand();
|
||||||
|
|
|
@ -469,6 +469,29 @@ a Perl script in `` or using B<system> if called as a single string.
|
||||||
|
|
||||||
While these cover most cases, there are situations where it will fail:
|
While these cover most cases, there are situations where it will fail:
|
||||||
|
|
||||||
|
=over 2
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
When run using B<exec>.
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
When run as the last command using B<-c> from another shell (because
|
||||||
|
some shells use B<exec>):
|
||||||
|
|
||||||
|
zsh% bash -c "parallel 'echo {} is not run in bash; set | grep BASH_VERSION' ::: This"
|
||||||
|
|
||||||
|
You can work around that by appending '&& true':
|
||||||
|
|
||||||
|
zsh% bash -c "parallel 'echo {} is run in bash; set | grep BASH_VERSION' ::: This && true"
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
When run in a Perl script using B<system> with parallel as the first
|
||||||
|
string:
|
||||||
|
|
||||||
|
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
system("parallel",'setenv a {}; echo $a',":::",2);
|
system("parallel",'setenv a {}; echo $a',":::",2);
|
||||||
|
@ -478,17 +501,24 @@ Perl script is called from B<tcsh> it will work just fine, but if it
|
||||||
is called from B<bash> it will fail, because the command B<setenv> is
|
is called from B<bash> it will fail, because the command B<setenv> is
|
||||||
not known to B<bash>.
|
not known to B<bash>.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
|
||||||
=head2 Quoting
|
=head2 Quoting
|
||||||
|
|
||||||
Quoting is kept simple: Use \ for all special chars and ' for
|
Quoting depends on the shell. For most shells \ is used for all
|
||||||
newline. Whether a char is special depends on the shell and the
|
special chars and ' is used for newline. Whether a char is special
|
||||||
context. Luckily quoting a bit too many does not break things.
|
depends on the shell and the context. Luckily quoting a bit too many
|
||||||
|
chars does not break things.
|
||||||
|
|
||||||
It is fast, but had the distinct disadvantage that if a string needs
|
It is fast, but had the distinct disadvantage that if a string needs
|
||||||
to be quoted multiple times, the \'s double every time - increasing
|
to be quoted multiple times, the \'s double every time - increasing
|
||||||
the string length exponentially.
|
the string length exponentially.
|
||||||
|
|
||||||
|
For B<tcsh>/B<csh> newline is quoted as \ followed by newline.
|
||||||
|
|
||||||
|
For B<rc> everything is quoted using '.
|
||||||
|
|
||||||
|
|
||||||
=head2 --pipepart vs. --pipe
|
=head2 --pipepart vs. --pipe
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue