efrei/scripting/bash/agenda_tel.sh

89 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
# Programme de gestion d'agenda téléphonique
# Ecrire des enregistrements dans un fichier : nom, prénom
# Afficher le menu suivant :
# 1. Ajouter une fiche
# 2. Supprimer une fiche
# 3. Rechercher une fiche (par le nom)
# 4. Modifier une fiche
# 5. Lister l'annuaire
# 6. Fin
annuaire_file=annuaire.csv
[ -f "$annuaire_file" ] || echo "nom,prenom" > "$annuaire_file"
menu() {
echo "====================="
echo "ANNUAIRE TÉLÉPHONIQUE"
echo "1 Ajouter une fiche"
echo "2 Supprimer une fiche"
echo "3 Rechercher une fiche par le nom"
echo "4 Modifier une fiche"
echo "5 Lister l'annuaire"
echo "6 Fin"
echo "====================="
echo
}
menu_court() {
echo "====================="
echo "ANNUAIRE TÉLÉPHONIQUE"
echo "L'annuaire est vide"
echo "1 Ajouter une fiche"
echo "6 Fin"
echo "====================="
echo
}
add() {
read -rp "Nom : " nom
read -rp "Prénom : " prenom
grep -sq "$nom,$prenom" "$annuaire_file" || echo "$nom,$prenom" >> "$annuaire_file"
}
remove() {
read -rp "Nom : " nom
new_annuaire_file=$(mktemp)
grep -v "$nom" "$annuaire_file" > "$new_annuaire_file"
mv "$new_annuaire_file" "$annuaire_file"
echo "Annuaire mis à jour"
}
search() {
read -rp "Nom : " nom
grep "$nom" "$annuaire_file" | awk -F',' '{print $2, $1}'
}
update() {
read -rp "Ancien nom : " old_nom
read -rp "Nouveau nom : " nom
read -rp "Nouveau prénom : " prenom
sed -i -E "s/^$old_nom.+$/$nom\,$prenom/" "$annuaire_file"
list
}
list() {
tail -n +2 "$annuaire_file" | sort | awk -F',' '{print $2, $1}'
}
if [ "$(wc -l "$annuaire_file" | awk '{print $1}')" = 1 ]; then
menu_court
else
menu
fi
while read -r choice; do
case $choice in
1) add;;
2) remove;;
3) search;;
4) update;;
5) list;;
6) exit;;
*) echo "Je n'ai pas compris";;
esac
sleep 2
menu
done