{{tag>Brouillon bash }} # Bash astuces Voir : * [15 Linux Bash History Expansion Examples You Should Know](http://www.thegeekstuff.com/2011/08/bash-history-expansion/) * https://scalastic.io/bash-functional-programming/ ## Check syntax avec shellcheck Voir aussi : * https://github.com/oxsecurity/megalinter ~~~bash shellcheck monscript.sh ~~~ Si faux positif ~~~bash # shellcheck disable=SC2086 rsync $RSYNC_OPT "${PART}/" "${PART_TMP}/" ~~~ ~~~bash $ shellcheck plop.sh In mkiso-debian.sh line 56: source "$FIC_PROPERTIES" ^-- SC1090: Can't follow non-constant source. Use a directive to specify location. ~~~ Solution Ajouter en commentaire `shellcheck source=` `plop.sh` ~~~bash # shellcheck source=vars/vm-deb10.var source "$FIC_PROPERTIES" ~~~ puis ~~~bash shellcheck -x plop.sh ~~~ `.shellcheckrc` ~~~bash external-sources=true shell=bash color=always ~~~ ## Variables Alternative à **eval** pour les variables Meta variables ~~~ $ a=1 $ b=2 $ meta_var="a" $ echo ${!meta_var} 1 ~~~ Appel de variable ~~~ $ B=2 $ KEY=B $ echo ${KEY} B $ echo ${!KEY} 2 ~~~ Déclaration / affectation de variables dynamiques ~~~ $ declare $KEY=12 $ echo ${!KEY} 12 ~~~ Ou encore ~~~bash K=V declare -n V2=K # Ce qui revient à : # V2="$K" $ LETTRE=ALPHA $ ALPHA=A $ declare -n PLOP=$LETTRE $ echo $PLOP A ~~~ ### Linter shfmt https://github.com/mvdan/sh ~~~bash ~/go/bin/shfmt -i 4 -s -w plop.sh ~~~ Auto indent vim ~~~ :set expandtab ts=4 sw=4 ai :retab ~~~ bashate ~~~bash pip3 install bashate bashate file.sh bashate -i E010,E011 file.sh file2.sh ~~~ ### Autres `/etc/skel/.bash_logout` ~~~bash /usr/bin/clear ~~~