2

Я хочу написать bash-скрипты, которые настолько самодокументированы, насколько это возможно.

У меня была идея, что когда я запускаю программное обеспечение с большим количеством флагов, я хотел разделить команду на несколько строк и добавить комментарий в конце каждой строки, рассказывающий о том, что делает флаг (информация со страницы руководства), вот так :

bwa aln \
-n $n \ # -n max #diff (integer) or missing prob under 0.02 err rate (float) [0.04]
-o $o \ # -o maximum number or fraction of gap opens [1]
-e $e \ # -e maximum number of gap extensions, -1 for disabling long gaps [-1]
-i $i \ # -i do not put an indel within integer bp towards the ends [5]
-d $d \ # -d maximum occurrences for extending a long deletion [10]
-l $l \ # -l seed length [32]
-k $k \ # -k maximum differences in the seed [2]
-m $m \ # -m maximum entries in the queue [2000000]
-t $t \ # -t number of threads [1]
-M $M \ # -M mismatch penalty [3]
-O $O \ # -O gap open penalty [11]
-E $E \ # -E gap extension penalty [4]
-R $R \ # -R stop searching when there are >integer equally best hits [30]
-q $q \ # -q quality threshold for read trimming down to 35bp [0]
-f $f \ # -f file to write output to instead of stdout
-B $B \ # -B length of barcode
-L $L \ # -L log-scaled gap penalty for long deletions
-N $N \ # -N non-iterative mode: search for all n-difference hits (slooow)
-I $I \ # -I the input is in the Illumina 1.3+ FASTQ-like format
-b $b \ # -b the input read file is in the BAM format
-0 $0 \ # -0 use single-end reads only (effective with -b)
-1 $1 \ # -1 use the 1st read in a pair (effective with -b)
-2 $2 \ # -2 use the 2nd read in a pair (effective with -b)
-Y $Y \ # -Y filter Casava-filtered sequences
-prefix $prefix \ # -prefix Prefix
-inputfile $inputfile \ # -inputfile Input file (FastQ format)

Проблема в том, что у меня не может быть ничего после символа \ (который говорит bash, что команда продолжается на следующей строке), и при этом я не могу иметь "\" в конце строки, потому что тогда это рассматривается как часть комментарий.

Кто-нибудь знает способ сделать это или что-то подобное?

3 ответа3

5

Я предлагаю использовать несколько строк для комментирования кода перед командой. лайк

 # this command uses multiple parameters
 # it requires 4 parameters and none are optional with no defaults
 # parameters used : 
 # -q              name of the file
 # -b              size to truncate
 # -n              new location
 # -r              recursive
3

Вы можете оценивать комментарии перед косой чертой, просто генерируя пустые строки для комментариев, которые не повлияют на ваш скрипт:

bwa aln \
-n $n `# -n max #diff (integer) or missing prob under 0.02 err rate (float) [0.04]` \
-o $o `# -o maximum number or fraction of gap opens [1]` \
....
1

Один из вариантов - собрать вашу команду по частям, чтобы вам не пришлось беспокоиться о продолжении строки:

cmd='date'                # run the date program
cmd=${cmd}' -d 20130905'  #  for this date
cmd=${cmd}' +%s'          #  with output in this format
echo $cmd                 # review the command
eval $cmd                 # run the command

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .