89 lines
1.8 KiB
Bash
Executable file
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
|