执行bash脚本100次

执行bash脚本100次,bash,Bash,我正在编写一个shell脚本,从一个fastq文件(Reads_qc.fastq)中随机选择200000行,在较小的文件(file1.fastq)上运行一个python脚本(counts.py),并计算python脚本生成的输出文件(summary)中的行数。 这是我的密码 cat Reads_qc.fastq |awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t\t");} }' |shuf |

我正在编写一个shell脚本,从一个fastq文件(Reads_qc.fastq)中随机选择200000行,在较小的文件(file1.fastq)上运行一个python脚本(counts.py),并计算python脚本生成的输出文件(summary)中的行数。 这是我的密码

cat Reads_qc.fastq |awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t\t");} }' |shuf  |head -n 200000 |sed 's/\t\t/\n/g' |awk '{print $1 > "file1.fastq"}'

python counts.py file1.fastq > summary

wc -l summary

您可以建议我如何让脚本执行这些操作100次。

您可以使用while循环,并使用“>>”操作符而不是“>”,将每个操作的结果附加到摘要文件中:

#!/bin/sh

count=100

while [ $count -lt 100 ]
do
    cat Reads_qc.fastq |awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t\t");} }' |shuf  |head -n 200000 |sed 's/\t\t/\n/g' |awk '{print $1 > "file1.fastq"}'
    # Append to summary file instead of overwrite.
    python counts.py file1.fastq >> summary
    count=`expr $count + 1`
done

而[“$count”-lt 100]
,也许你的意思是?没有空间,这根本不起作用;它将试图在[100时找到名为
的命令,我怀疑您的计算机上是否安装了一个。而且,
count=100
也不是一个赋值;它需要是
count=100
,没有空格,才能工作(实际上,它将调用
count
作为命令,第一个参数是
=
,第二个参数是
100
)…和
cat foo | bar
相比效率极低。我也同意OP的方法效率很低。我只是简单地回答了被问到的问题。我已经编辑了我的帖子以包括适当的间距,谢谢。即使编辑了,仍然试图在[
。假设bash(根据您的标记)而不是
/bin/sh
用于((i=0;i