Bash astuces

Voir : FIXME2

15 Linux Bash History Expansion Examples You Should Know

https://scalastic.io/bash-functional-programming/

Check syntax avec shellcheck

Voir aussi :

https://github.com/oxsecurity/megalinter

shellcheck monscript.sh

Si faux positif

# shellcheck disable=SC2086 rsync $RSYNC_OPT "${PART}/" "${PART_TMP}/"
$ 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

# shellcheck source=vars/vm-deb10.var source "$FIC_PROPERTIES"

puis

shellcheck -x plop.sh

.shellcheckrc

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

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

~/go/bin/shfmt -i 4 -s -w plop.sh

Auto indent vim

:set expandtab ts=4 sw=4 ai
:retab

bashate

pip3 install bashate bashate file.sh bashate -i E010,E011 file.sh file2.sh

Autres

/etc/skel/.bash_logout

/usr/bin/clear