[英]Bash variable caused syntax error inside awk [duplicate]
这个问题已经在这里有了答案:
我收到以下错误
awk: cmd. line:1: {if(NR%4==2) print length(.)}
awk: cmd. line:1: ^ syntax error
在运行sh s.sh .
#!/bin/bash
#usage: sh afterqc_pbs.sh /work/waterhouse_team/All_RawData/Banana_Each_Cell_Raw/Banana_Illumina/QUT_WT_GN366_4
for r1 in $(find $1 -name "*R1*.gz");
do
base=${r1%_R1*}
echo $base
output=$(basename $(echo $r1 | sed 's/R1//g'))
r2=$(echo $r1 | sed 's/R1/R2/g')
echo $r1
echo $r2
#cat <<EOF
qsub <<EOF
#!/bin/bash -l
#PBS -N $output
#PBS -l walltime=48:00:00
#PBS -j oe
#PBS -l mem=50G
#PBS -l ncpus=1
#PBS -M m.lorenc@qut.edu.au
##PBS -m bea
cd \$PBS_O_WORKDIR
echo "Average\n"
zcat $r1 | awk '{if(NR%4==2) {count++; bases += length} } END{print bases/count}'
echo "Distribution\n"
zcat $r1 | awk '{if(NR%4==2) print length($1)}' | sort -n | uniq -c
EOF
done
awk怎么可能不启动.
而不是长度?
先感谢您。
问题是您使用qsub <<EOF
。 当您使用<<
(称为“ here document”或“ heredoc”)时,其中的任何变量都会被扩展。 围绕它们的单引号不计算在内,因为heredoc具有优先权。 如果要更改此设置,请将<<EOF
更改为<<"EOF"
。 https://www.gnu.org/software/bash/manual/bashref.html#Here-Documents具有更多详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.