_OPTIDIEN-TECH

BASH_SCRIPTING_ENGINE

SHELL_TYPE: /bin/bash

01_Basics_Vars

  • #!/bin/bash - Shebang
  • VAR="val" - Déclarer variable
  • ${VAR} - Accéder variable
  • readonly V - Constante
  • unset V - Suppr variable
  • export V - Dispo pour sous-process
  • env - Lister vars d'env
  • ${V:-"def"} - Valeur par défaut
  • ${#V} - Longueur string
  • ${V:0:3} - Substring (0 à 3)

02_Special_Params

  • $0 - Nom du script
  • $1 .. $9 - Arguments 1 à 9
  • $# - Nombre d'arguments
  • $@ - Tous les arguments
  • $? - Code retour (0=OK)
  • $$ - PID du script actuel
  • $! - PID dernier process bg
  • shift - Décale les arguments

03_Conditions

  • [[ $A == $B ]] - Égalité string
  • [[ $A != $B ]] - Inégalité
  • [[ -z $V ]] - Est vide ?
  • [[ -n $V ]] - N'est pas vide ?
  • [[ -f $F ]] - Est un fichier ?
  • [[ -d $D ]] - Est un dossier ?
  • [[ -x $F ]] - Est exécutable ?
  • (( A > B )) - Comparaison math
  • [[ A && B ]] - Opérateur AND
  • [[ A || B ]] - Opérateur OR

04_Loops

  • for i in {1..5}; do - Range loop
  • for f in *.sh; do - File loop
  • while [[ cond ]]; do - Tant que
  • until [[ cond ]]; do - Jusqu'à ce que
  • break - Sortir boucle
  • continue - Sauter itération
  • read -r line - Lire input
  • done - Fin de boucle

05_Math_Arrays

  • (( A = 5 + 2 )) - Addition
  • (( A++ )) - Incrément
  • bc <<< "scale=2; 5/2" - Float math
  • ARR=(a b c) - Créer array
  • ${ARR[0]} - Index 0
  • ${ARR[@]} - Tous les items
  • ${#ARR[@]} - Taille array
  • ARR+=("d") - Ajouter item

06_Functions

  • func_name() { ... } - Définir
  • local V="x" - Var locale
  • return 0 - Code retour
  • echo "res" - "Retourner" string
  • func "$1" - Appeler avec arg

07_Streams

  • > file - Écraser stdout
  • >> file - Appendre stdout
  • 2> /dev/null - Muet stderr
  • &> file - Stdout+Stderr
  • | - Pipe (Std out to in)
  • < <(cmd) - Process substitution
  • << EOF - Here document
  • 2>&1 - Stderr vers Stdout

08_Patterns

  • set -e - Stop si erreur
  • set -x - Debug mode (trace)
  • trap "cmd" EXIT - Cleanup à la fin
  • basename "$0" - Nom du script
  • dirname "$(readlink -f "$0")" - Dir absolue
  • getopts "ab:" OPT - Parser flags

09_Case_Statement

case "$1" in
  start) systemctl start srv ;;
  stop)  systemctl stop srv ;;
  *) echo "Usage: $0 {start|stop}" ;;
esac

10_String_Manipulation

  • ${V/src/dst} - Remplacer 1ère occurence
  • ${V//src/dst} - Remplacer toutes
  • ${V#*.} - Suppr prefix court
  • ${V##*.} - Suppr prefix long
  • ${V%.*} - Suppr suffix court