このbashスクリプトがありますが、終了を完了するにはどうすれば改善する必要がありますか?

このbashスクリプトがありますが、終了を完了するにはどうすれば改善する必要がありますか?

こんにちは、私は初めてbashスクリプトを使用します。次のコードがあり、エラーなしで実行または終了を完了します。私は成功したかどうかを確認するために、失敗メッセージまたは最後に終了を含む行を標準出力に追加したいと思います。あなたの誰も私を助けます。 PS ありがとうございます。可能であれば、より一般的な内容に役立ちます。

#!/usr/bin/env bash
fastq-dump --split-files SRR531199
head -n 2000000 SRR531199_1.fastq > SRR531199_1.500k.fastq
head -n 2000000 SRR531199_2.fastq > SRR531199_2.500k.fastq
for dataset in SRR497965 SRR497966 SRR497967 SRR497968 ERR1716491
do
 fastq-dump -M 1000 --table SEQUENCE $dataset
done

ウェブサイトの最後にあるアプリのこのチュートリアルで得られたコード:
http://evomics.org/learning/assemble-and-alignment/2018-assemblies-kmer-lab/

ベストアンサー1

コマンドまたはスクリプトの終了コードを操作する方法はいくつかあります。あなたの場合は複数のコマンドを繰り返すので、次のように各コマンドの終了コードを収集することをお勧めします。

failures=0

fastq-dump --split-files SRR531199
head -n 2000000 SRR531199_1.fastq > SRR531199_1.500k.fastq
head -n 2000000 SRR531199_2.fastq > SRR531199_2.500k.fastq
for dataset in SRR497965 SRR497966 SRR497967 SRR497968 ERR1716491
do
    fastq-dump -M 1000 --table SEQUENCE "$dataset" || ((failures++))
done

if ((failures>=1)); then
    echo "Script had $failures failures"
    exit $failures
else
    exit 0
fi

これはfailures、ゼロ以外の値で終了するループ内の各コマンドに対して変数を1ずつ増やします。次に、計算した失敗回数を再エコーし、その数で終了します。

おすすめ記事