logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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+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 associatif ou indexé
  • Tableau vide = “non affecté” “non déclaré” “zéro éléments”
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

  • 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
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>&-
utilisateurs/tawal/scripts/trucs-et-astuces.txt · Dernière modification: 15/05/2023 19:10 par Tawal

Pied de page des forums

Propulsé par FluxBB