以下脚本崩溃:
#!/bin/bash
#usage: sh oxford_pbs.sh ref.fa AA.fasta hybrid.gff3
cov=50
ide=100
for ((i=70;i<=${ide};i++));
do
input=$(basename $(echo ${2} | sed 's|.gff3||g'))
#cat <
有了这个错误:
/var/spool/PBS/mom_priv/jobs/8352088.pbs.SC: line 24: /home/biol/perl5: Is a directory
/var/spool/PBS/mom_priv/jobs/8352088.pbs.SC: line 27: agat_sp_extract_sequences.pl: command not found
但是,这两个命令在命令行上运行时没有任何问题:
> module load bioperl/1.7.1-foss-2017a r/3.4.2-bioconductor-foss-2017a
> eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
>
> agat_sp_extract_sequences.pl --help
------------------------------------------------------------------------------
| Another GFF Analysis Toolkit (AGAT) - Version: v0.1.0 |
| https://github.com/NBISweden/AGAT |
| National Bioinformatics Infrastructure Sweden (NBIS) - www.nbis.se |
------------------------------------------------------------------------------
为什么Perl脚本不运行在Bash脚本中?
提前谢谢你
发布于 2020-11-01 01:25:47
问题是,$(perl ...)
命令替换将立即完成,因为您有qsub <而不是qsub <<'EOF',以便展开${i}。
perl将输出可以包含空格的行,如
PERL_MB_OPT="--install_base \"/home/user/perl5\""
但是,当您在执行最终脚本时,它们将变成
PERL_MB_OPT=--install_base "/home/user/perl5"
关于/home/user/perl5的错误将是一个目录。最简单的解决方案是将perl推迟到以后:
eval "\$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
https://unix.stackexchange.com/questions/617404
复制相似问题