У меня есть сценарий оболочки для инструмента, и я только разоблачил несколько аргументов командной строки этого инструмента, но мне интересно, как я могу получить все аргументы командной строки для инструментов внутри сценария оболочки?Как использовать все аргументы командной строки для инструмента в сценарии оболочки Bash?
Вот инструмент, который я заинтересован в:
hisat2 [options]* -x <hisat2-idx> {-1 <m1> -2 <m2> | -U <r> | --sra-acc <SRA accession number>} [-S <hit>]
Options
Input options
-q
Reads (specified with <m1>, <m2>, <s>) are FASTQ files. FASTQ files usually have extension .fq or .fastq. FASTQ is the default format. See also: --solexa-quals and --int-quals.
--qseq
Reads (specified with <m1>, <m2>, <s>) are QSEQ files. QSEQ files usually end in _qseq.txt. See also: --solexa-quals and --int-quals.
-f
Reads (specified with <m1>, <m2>, <s>) are FASTA files. FASTA files usually have extension .fa, .fasta, .mfa, .fna or similar. FASTA files do not have a way of specifying quality values, so when -f is set, the result is as if --ignore-quals is also set.
-r
Reads (specified with <m1>, <m2>, <s>) are files with one input sequence per line, without any other information (no read names, no qualities). When -r is set, the result is as if --ignore-quals is also set.
-c
The read sequences are given on command line. I.e. <m1>, <m2> and <singles> are comma-separated lists of reads rather than lists of read files. There is no way to specify read names or qualities, so -c also implies --ignore-quals.
В моей обертке сценарии я был в состоянии выставить все обязательные варианты hisat2 инструмента.
#!/bin/bash
usage() {
echo ""
echo "Usage : sh $0 -i Input_folder -l lib_type {-1 <left_reads> -2 <right_reads> | -U <single_reads> | -s <sra_id>} -S <output_sam> -p numb_threads"
echo ""
cat <<'EOF'
-i </path/to/input folder>
-l Library type
-1 </path/to/reads_1>
-2 </path/to/reads_2>
-U </path/to/single_reads>
-S </path/to/sam output>
-s SRA ID
-p Number of threads
EOF
exit 0
}
while getopts ":hi:l:1:2:U:S:s:p:" opt; do
case $opt in
i)
input_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
;;
S)
sam_out=$OPTARG # Samoutput file
;;
s)
sra_id=$OPTARG # SRA ID
;;
p)
num_threads=$OPTARG # Number of threads
;;
h)
usage
exit 1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
for i in $input_folder/*; do
cp $i .
fbname=$(basename "$i" .ht2 | cut -d. -f1)
done
if [ ! -z $left_reads ] && [ ! -z $right_reads ];
then
hisat2 -x $fbname --rna-strandness $lib_type -1 $left_reads -2 $right_reads -S temp.sam -p $num_threads
samtools view -bS temp.sam > $sam_out
rm temp.sam
fi
Когда я смотрел на необязательных аргументах есть более чем 20 из них, и да я могу вручную выставить их все в моей обертке сценарии, но мне интересно, если есть способ сделать это программно.
Почему у вас есть обертка? Я думаю, что это не очень хорошая идея, чтобы обертка беспокоилась обо всех аргументах командной строки вещи, которую вы обертываете. – codeforester
Мне нужна оболочка, потому что оригинальный инструмент не работает так, как я хотел. – upendra
Есть ли у самой обертки какие-либо аргументы? – codeforester