Table des matières

Trucs et Astuces pour les scripts

Log + Retours console

Enregistre les retours standards et les erreurs dans le même fichier log
log+retours.sh
Log="/chemin/complet/du/fichier/log"
 
# Enregistre stdout et stderr dans le même fichier
exec &> >(tee -a "$Log")
Enregistre les retours standards et les erreurs dans 2 fichiers log différents
log-standard_log-erreur+retours
Log="/chemin/complet/du/fichier/log"
Err="/chemin/complet/du/fichier/erreurs"
 
# Enregistre séparément stdout dans $Log et stderr dans $Err
exec 1> >(tee -a "$Log") 2> >(tee -a "$Err")

Tester si un tableau est vide

tableau_vide_test.sh
if ((${#Tableau[@]}))
then
   echo "Tableau non vide."
else
   echo "Tableau vide."
fi
 
# Ou en plus court :
((${#Tableau[@]})) && echo "Tableau non vide." || echo "Tableau vide."

Fenêtre de progression d'un script

fenêtre_progression.sh
#!/bin/bash
 
# Création des descripteurs de fichiers fd4 et fd5 (utiles pour communiquer avec la fenêtre yad)
mkfifo fifo
exec 6<>fifo 4<fifo 5>fifo 6>&-
rm fifo
 
# Fenêtre de progression (en arrière plan)
yad --progress                       \
    --title="Progression du script"  \
    --width="350"                    \
    --no-buttons                     \
    --auto-close                     \
    --text="\n\tScript en cours ..."   <&4 &
 
# Démarrage de la progression (utile pour lancer la pulsation).
echo "0" >&5
sleep 3
 
# Augmentation de la progression
# et affichage de messages au dessus de la barre de progression
echo "30" >&5
echo "#Script à 30% de progression ..." >&5
sleep 2
 
echo "50" >&5
echo "#Script à 50% de progression ..." >&5
sleep 3
 
echo "80" >&5
echo "#Script à 80% de progression ..." >&5
sleep 2
 
# Fermeture de la boite (option --auto-close sinon 100% de progression atteinte.)
echo "#Script à 100% de progression ..." >&5
echo "100" >&5
 
# On ferme les descripteurs de fichiers
exec 4>&- 5>&-