Skip to content
Mathieu Lavigne edited this page Oct 15, 2025 · 25 revisions

Usage

function usage() {
  echo "ma_fonction <monParamètre1> <monParamètre2>" >&2
  exit 1
}

Suivi d'un fichier de log avec grep

tail -f error_log_frparvm37955927_traducteur.log | grep --line-buffered 't_adresse'

Variables

MOUNT="/bin/mount"
basedir=`dirname $0`
JAR_NAME=$(basename -- "$JAR_PATH")
user=$(whoami)
RETOUR=$?
VAR=${!VARNAME} # Déclaration de variable avec un nom dynamique
ESCAPED_MULTILINE="${MULTILINE//$'\n'/\\n}" # Échappement des sauts de ligne contenu dans une variable (uniquement le premier si / au lieu de //)
"${*: -1}" # Dernier argument
${*%${!#}} # Tous les arguments sauf le dernier
versionWithoutSnapshot="${version%%-SNAPSHOT}" # Suppression de suffixe

Source Source

Vérification de variables :

if [ -z "$VAR" ]; then echo "Chaîne vide"; exit 1; fi

Autres conditions :

[[ $VAR == *"Sous chaîne"* ]]

Aperçu de fichier

Première ligne d'un fichier.

head -n 1 file.txt

Dernière ligne d'un fichier

tail -n 1 file.txt

Installation de package

Installer le package gettext, si on ne trouve pas la commande envsubst :

which envsubst || (apt-get update -y && apt-get install gettext -y)

Pour Alpine :

which envsubst || (apk update && apk add gettext)

Chemin

Boucler sur un chemin avec wildcards :

# Exemple : "dossier/*/fichier.txt"
local files
files=$*
if [ -z "$files" ]; then usage; fi

for file in $files; do
  echo "$file"
done

Si le chemin contient ** :

shopt -s globstar # Pour activer la recherche de fichier via **

Source

Lecture de fichier

Ligne par ligne :

while IFS="" read -r line || [ -n "$line" ]; do
    printf 'Ligne : %s\n' "$line"
  done <"$file"

Source.

Fonctions

Paramètres

  local OPTIND o save_jar_only
  save_jar_only=false
  while getopts ":j" o; do
    case "${o}" in
    j)
      save_jar_only=true
      ;;
    *)
      foo_usage
      ;;
    esac
  done
  shift $((OPTIND - 1))

Retour booléen

Exemple avec une fonction qui teste si une chaîne apparaît dans un fichier :

# Déclaration de la fonction
function pom_contains_version {
  grep "<version>$1</version>" pom.xml --silent
}

# Utilisation de la fonction
if pom_contains_version "develop"; then # Le if se base sur le code retour de la fonction : $?
  # ...
fi

Erreurs

Dans les exemples, on renvoie un statut 1, mais tout nombre différent de 0 est possible.

Lancer une erreur depuis une fonction :

echo "Impossible de trouver la version de develop sur GitLab" >&2
exit 1

Détecter une erreur lors du dernier appel de fonction :

if [ $? -ne 0 ]; then exit 1; fi

Clone this wiki locally