====== Trucs et Astuces pour les scripts ======
* Quelques trucs et astuces pour les scripts écrits en bash
===== Log + Retours console =====
* Enregistrer les retours des commandes du script dans un fichier.
* Garder les retours console si le script est lancé dans un terminal.
* À mettre en début de script (ou à partir de l'endroit où on veut "loguer").
== Enregistre les retours standards et les erreurs dans le même fichier log ==
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="/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 associatif ou indexé
* Tableau vide = "non affecté" "non déclaré" "zéro éléments"
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 =====
* Avoir une fenêtre de progression du script (yad)
* Pouvoir lui donner des informations
* 2 sortes d'informations : le pourcentage de progression et/ou du texte
* Je vous montre une possibilité (qui est modifiable, extensible, malléable ...à vous devoir avec les mans)
* Ce n'est qu'un exemple de principe
* Les ''sleep'' sont là pour simuler le déroulement d'une partie de script
#!/bin/bash
# Création des descripteurs de fichiers fd4 et fd5 (utiles pour communiquer avec la fenêtre yad)
mkfifo fifo
exec 6<>fifo 4fifo 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>&-