Outils pour utilisateurs

Outils du site


tech:bash_astuces

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tech:bash_astuces [2025/05/19 17:07] Jean-Baptistetech:bash_astuces [2026/06/16 15:23] (Version actuelle) Jean-Baptiste
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{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
 +~~~
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki