私はbashスクリプトを持っていて、そのスクリプトの実行中に特定のコマンドラインフラグが提供されていればメッセージを出力したいと思います。例えば、ここに私のbashスクリプトがあります。シェルオプション "OPTIONNAME"がスクリプトで正しく動作していない
while getopts ":hi:l:1:2:U:O:s:p:5:3:qQm:M:I:X:" opt; do
case $opt in
i)
index_folder=$OPTARG # Input folder
;;
l)
lib_type=$OPTARG # Library type
;;
1)
left_reads+=("$OPTARG") # Left reads
;;
2)
right_reads=("$OPTARG") # Right reads
;;
U)
single_reads+=("$OPTARG") # single end reads
;;
O)
bam_out=$OPTARG # Samoutput file
;;
s)
sra_id=$OPTARG # SRA ID
;;
p)
num_threads=$OPTARG # Number of threads
;;
5)
five_trim=$OPTARG # 5' trim
;;
3)
three_trim=$OPTARG # 3' trim
;;
q)
quality_33=$OPTARG # Phred 33
;;
Q)
quality_64=$OPTARG # Phread 64
;;
m)
min_intl=$OPTARG # Minimum intron length
;;
M)
max_intl=$OPTARG # Maximum intron length
;;
t)
tra_as=$OPTARG # Report alignments tailored for transcript assemblers including StringTie
;;
c)
tra_cuff=$OPTARG # Report alignments tailored specifically for Cufflinks
;;
esac
done
if [ ! -z $left_reads ] && [ ! -z $right_reads ]; then
echo "original"
elif [ ! -z $left_reads ] && [ ! -z $right_reads ] && [ ! -o $quality_33 ];
then
echo "quality"
fi
そして、私はこのように実行しようとします。 、それはまだ
sh Hisat2_align.sh -i index -l "F" -1 reads_1.fq -1 e_coli_1000_1.fq -2 reads_2.fq -2 e_coli_1000_2.fq -p 2 -O final_bam -5 10 -3 10 -m 20 -M 200 -q
original
は私が間違って何をやっている最初の出力を出力します - 私は、余分なオプションを含めるしようとすると、それは、(「品質」第2の条件に該当する)、しかし正しく
sh test.sh -i index -l "F" -1 reads_1.fq -1 e_coli_1000_1.fq -2 reads_2.fq -2 e_coli_1000_2.fq -p 2 -O final_bam -5 10 -3 10 -m 20 -M 200
original
を印刷しますここに?
は[MCVE] - あなたのコードは最小限から遠く離れていると私はあなたが求めているものであってもよく分かりません。 – melpomene