Le premier: https://f-hauri.ch/vrac/reshellcheck.sh partait du constat que la sortie par défaut de shellcheck est lourde! J'ai donc cherché à ``systématiser'' et réduire la sortie:
$ ./reshellcheck.sh showColor.sh NOTE 4x 1x SC2015: Note that A && B || C is not if-then-else. C may run when A is true. 7 (1): (( ( pointer - 1 ) % colsperline )) && printf ' ' || { 3x SC2086: Double quote to prevent globbing and word splitting. 13 (3): "$color" 0x${color:1:2} 0x${color:3:2} 0x${color:5:2} '' '' '' WARNING 1x 1x SC2183: This format string has 2 variables, but is passed 1 argument. 8 (1): printf -v lines '%*s' $((pointer>1?8:4)) Total: 5 remarks (4 note, 1 warning). (A noter que j'utilise la couleur pour situer l'empacement normalement indiqué par des lignes (redondantes) commencant par "^".) En ordonnant les ``notes'' avant les ``warnings'', suivit des ``errors''. A comparer avec: $ shellcheck showColor.sh In showColor.sh line 7: (( ( pointer - 1 ) % colsperline )) && printf ' ' || { ^-- SC2015 (info): Note that A && B || C is not if-then-else. C may run when A is true. In showColor.sh line 8: printf -v lines '%*s' $((pointer>1?8:4)) ^---^ SC2183 (warning): This format string has 2 variables, but is passed 1 argument. In showColor.sh line 13: "$color" 0x${color:1:2} 0x${color:3:2} 0x${color:5:2} '' '' '' ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. ^----------^ SC2086 (info): Double quote to prevent globbing and word splitting. Did you mean: "$color" 0x"${color:1:2}" 0x"${color:3:2}" 0x"${color:5:2}" '' '' '' For more information: https://www.shellcheck.net/wiki/SC2183 -- This format string has 2 variable... https://www.shellcheck.net/wiki/SC2015 -- Note that A && B || C is not if-t... https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ... Quant au second: https://f-hauri.ch/vrac/parShellCheck.sh Il parallelise shellcheck et trie les réponses et effecue une stat d'ensemble: $ ./parShellCheck.sh <path> ou $ ./parShellCheck.sh <file> <file> Exemple: $ ./parShellCheck.sh showColor.sh coprocDate.source.sh Found: 2 files to check with max 4 instances. Started File Rslt microseconds - ven 11 18:52:52.504940 1 25428 - ven 11 18:52:52.513505 coprocDate.source.sh 1 14775 Succeeded: 0. Failed: 2. - Shellcheck msgs: 1x SC2015, 3x SC2086, 1x SC2183. 7: 1xSC2015. (( ( pointer - 1 ) % colsperline )) && printf ' ' || { 8: 1xSC2183. printf -v lines '%*s' $((pointer>1?8:4)) 13: 3xSC2086. "$color" 0x${color:1:2} 0x${color:3:2} 0x${color:5:2} '' '' '' - coprocDate.source.sh Shellcheck msgs: 4x SC1083, 2x SC2086, 1x SC2093. 8: 2xSC2086. echo >&${DATE[1]} "$*"; read -ru ${DATE[0]} out 12: 4xSC1083, 1xSC2093. endDate() { kill "$DATE_PID"; exec {DATE[1]}>&-; exec {DATE[0]}<&-;} Overall stat: 12 errors founds but 5 differents errors. - SC1083 4 warning: This { is literal. Check expression (missing ;/\n?) or quote it. - SC2015 1 note : Note that A && B || C is not if-then-else. C may run when A is true. - SC2086 5 note : Double quote to prevent globbing and word splitting. - SC2093 1 warning: Remove "exec " if script should continue after this command. - SC2183 1 warning: This format string has 2 variables, but is passed 1 argument. Le Fri, Apr 11, 2025 at 12:34:09PM +0200, Marc SCHAEFER via gull a écrit : > > Au fait, tu connais > > https://f-hauri.ch/vrac/reshellcheck.sh > > https://f-hauri.ch/vrac/parShellCheck.sh > > Non, ça me dépasse :) > _______________________________________________ > gull mailing list > gull@forum.linux-gull.ch > https://forum.linux-gull.ch/mailman/listinfo/gull -- Félix Hauri - <fe...@f-hauri.ch> - http://www.f-hauri.ch _______________________________________________ gull mailing list gull@forum.linux-gull.ch https://forum.linux-gull.ch/mailman/listinfo/gull