如何使bash脚本一个接一个地执行程序而不是一次执行所有程序?

时间:2015-03-10 16:50:19

标签: bash

免责声明:我没有编程经验。

我有数百个文件需要被名为fastq-mcf的程序修改。我希望创建一个bash脚本,为我做这个,一次一个文件。换句话说,程序会修改我的文件,完成,然后继续下一步。我已成功使用其他程序,如wget和cat,所以我认为这将是直截了当的。但不幸的是,当我尝试我的脚本时,所有文件都会立即开始编辑,这对我的计算机来说当然太过分了。

这是我的脚本示例,只有两个要处理的文件:

#!/bin/bash

/Applications/fastq-mcf -o MAP346_1.mcf.fasta -o MAP346_2.mcf.fasta -q 20 -D 50 -S -w 4 -x 10 -u /Users/pdm37/Documents/MAP/sequencing_results/fastqmcf_trim/NexteraPE-PE.fasta /Users/pdm37/Documents/MAP/sequencing_results/raw_data/4898_2708_17422_HBGAEADXX_MAP346_TAGGCATG-ACTGCATA_R1.fastq.gz /Users/pdm37/Documents/MAP/sequencing_results/raw_data/4898_2708_17422_HBGAEADXX_MAP346_TAGGCATG-ACTGCATA_R2.fastq.gz &>rMAP346.log &

/Applications/fastq-mcf -o MAP345_1.mcf.fasta -o MAP345_2.mcf.fasta -q 20 -D 50 -S -w 4 -x 10 -u /Users/pdm37/Documents/MAP/sequencing_results/fastqmcf_trim/NexteraPE-PE.fasta /Users/pdm37/Documents/MAP/sequencing_results/raw_data/4898_2708_17421_HBGAEADXX_MAP345_TAGGCATG-GTAAGGAG_R1.fastq.gz /Users/pdm37/Documents/MAP/sequencing_results/raw_data/4898_2708_17421_HBGAEADXX_MAP345_TAGGCATG-GTAAGGAG_R2.fastq.gz &>rMAP345.log &

简化它

#!/bin/bash

/path/fastq-mcf output_file1 output_file2 -options necessary_info_file input_file1 input_file2 &>r12.log &

/path/fastq-mcf output_file3 output_file4 -options necessary_info_file input_file3 input_file4 &>r34.log &

我尝试添加分号而不是两行之间的返回,但这没有帮助,它只是说出现了意外的字符。

我真的希望你能帮助我。也许有一个简单的解决方案,或者我需要以非常不同的方式解决这个问题?理想情况下,我会使用您的解决方案,然后使用其他程序进一步处理这些文件,这将有助于了解我做错了什么。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您需要确保命令1在继续执行命令2之前成功完成,您可以使用&&

command 1 && command 2

。还有wait命令,但我对此并不了解。

https://bbs.archlinux.org/viewtopic.php?id=92761