--- title: "Bash life" summary: "Bourne Again SHell" author: - JF date: 20-05-2025 --- [Bash cheatsheet](https://devhints.io/bash) [Bash strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) ```bash set -euo pipefail IFS=$'\n\t' ``` ## BASH_REMATCH et les tests de regex `=~` avec l'opérateur conditionnel `[[`: [BASH_REMATCH special variable](https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#index-BASH_005fREMATCH) Lors d'un test de regex avec du type `if [[ ${variable} =~ ${pattern} ]]`, tous les résultats qui "matchent" le pattern sont stockés dans un variable spéciale `BASH_REMATCH`, qui est en fait un array. On peut donc itérer dessus. Exemple : ```bash var="un velo" pattern='(u[a-z]+)\s*(v[a-z]+)' if [[ $var =~ $pattern ]]; then for m in "${!BASH_REMATCH[@]}"; do echo "$m: ${BASH_REMATCH[$m]}" done fi ``` Résultat: ```txt 0: un velo 1: un 2: velo ```