linux - 重击 : doubly looping don't work

标签 linux

我有这个循环,但它不起作用:-/

for i in *CCDSxBaseCov.bed
    do SM=`(echo $i | sed 's/.bed//g')`; echo $SM
        for chr in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X Y M; do echo "-- chr$chr --"; bases=`(grep chr$chr "${SM}_hg19_EXONSxBaseCov.bed" | wc -l)`; echo "EXONS target length=$bases"; cov=`(grep chr$chr "${SM}_hg19_EXONSxBaseCov.bed" | awk '{sum+=$3} END {print sum}')`; echo "sum EXONS bases coverage=$cov"; avercov=$(($cov/$bases)); echo "EXONS average coverage=$avercov" >> ${SM}_hg19_EXONScovstats.txt
        done
    done

第二个循环单独工作

最佳答案

注释内部 for(如果它可以独立工作)并屏蔽 $i,因为它是一个文件名,可能包含空格。使用 $(...) 代替已弃用的反引号。

for i in *CCDSxBaseCov.bed
    do SM=$((echo "$i" | sed 's/.bed//g')); echo $SM
        # for chr in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X Y M; do echo "-- chr$chr --"; bases=`(grep chr$chr "${SM}_hg19_EXONSxBaseCov.bed" | wc -l)`; echo "EXONS target length=$bases"; cov=`(grep chr$chr "${SM}_hg19_EXONSxBaseCov.bed" | awk '{sum+=$3} END {print sum}')`; echo "sum EXONS bases coverage=$cov"; avercov=$(($cov/$bases)); echo "EXONS average coverage=$avercov" >> ${SM}_hg19_EXONScovstats.txt
        # done
    done

关于linux - 重击 : doubly looping don't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49339941/

相关文章:

linux - 如何在 Linux shell 中执行 'where' 子句?

linux - 根据另一个文件排除 N 个文件中的值

linux - 如何只允许(少数)特定进程/线程在 Linux 的核心上运行

在没有 Root 访问的情况下,Linux 在 CPL3(用户模式)下会崩溃或挂起吗?

linux - 在脚本中重定向 stderr 并添加前缀

c - 内核函数中断失败但 ioctl 失败

python - 用于 CAN 总线访问的 Popen 的更快替代方案?

linux - 带有案例的 Linux 脚本中的 Ping

c++ - Profinet/Profibus linux

c++ - 由于交叉编译树莓派,未定义对 'vtable for Adafruit_GFX' 的引用