====== 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>&-