Comment puis-je ajouter un commentaire pour chaque drapeau, sur des lignes distinctes, dans un script bash?

Je veux écrire des scripts bash qui sont aussi auto-documentaires que possible.

J'ai eu l'idée que lorsque j'exécute un logiciel avec beaucoup de drapeaux, je voulais diviser la commande en plusieurs lignes et ajouter un commentaire à la fin de chaque ligne, en indiquant ce que le drapeau fait (info d'une page man) :

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) 

Le problème est que je ne peux rien avoir après le caractère \ (qui indique à bash que la commande continue sur la ligne suivante), et je ne peux pas non plus avoir le "\" au bout de la ligne, car il est traité comme faisant partie de le commentaire.

Quelqu'un sait-il un moyen de le faire, ou quelque chose de similaire?

Vous pouvez évaluer les commentaires avant la barre oblique, en générant simplement des chaînes vides pour les commentaires qui n'auront pas d'incidence sur votre script:

 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]` \ .... 

Je suggère d'utiliser plusieurs lignes pour commenter le code avant la commande. comme

  # 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 

Une option est de construire votre commande en morceaux afin de ne pas vous soucier de la continuité de la ligne:

 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