Ecrire un script bash interactif avec saisie par l’utilisateur
Après mes premiers posts relatifs aux boucles while, for, expressions rationnelles, voici une utilisation combinée de ces petits scripts, pour construire un simple script interactif en BASH.
Le script utilisé ici est axé sur l’aspect didactique, permettant d’être utilisé comme une référence simple et facile pour écrire un script BASH interactif.
Ce script va dans l’ordre :
– Demander combien de saisies sont attendues
– Vérifier que les réponses sont cohérentes et non vides
– Stocker les résultat dans un tableau associatif (array) en variable
– Afficher le contenu du tableau associatif
#!/bin/bash # Ce script permet d'afficher un tableau suite a une saisie de liste simple # Alexandre BLANC - http://blog.inforeseau.com - 11/2010 #Jusqu'a ce que la reponse soit composée par un nombre, j'attends la saisie until [[ ${nombre} =~ ^[0-9]+$ ]]; do echo "Combien de personnes a saisir ?" read nombre done #Du nombre saisi jusqu'a 1 inclus, je vais executer for (( i=${nombre}; i>=1; i-- )) do #Tant que la variable est vide, j'attends la saisie while [ -z ${nom[$i]} ]; do echo "Veuillez saisir votre nom" read nom[$i] done echo "Bienvenue ${nom[$i]}" #Jusqu'a ce que la variable ne soit pas vide, j'attends la saisie until [ ! -z ${prenom[$i]} ]; do echo "Veuillez saisir votre prenom" read prenom[$i] done echo "Ajouté ${prenom[$i]} ${nom[$i]}, on continue, plus que $i !" done echo "Listing de la totalité des noms :" #Affiche tout le contenu du tableau (array) contenu dans la variable nom echo ${nom[*]} echo "Listing de la totalité du tableau associatif :" for (( i=1; i<=${nombre}; i++ )) do echo ${prenom[$i]} ${nom[$i]} done #Sources : #http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html #http://tldp.org/LDP/abs/html/refcards.html#AEN21811 #http://www.linuxquestions.org/questions/programming-9/bash-scripting-check-for-numeric-values-352226/ #http://tldp.org/LDP/abs/html/arrays.html
Les points intéressants de ce script sont les différentes boucles utilisées (until, for, while), la lecture interactive de variables par l’utilisateur (read), le test de validation sur la première réponse, à l’aide de l’expression rationnelle (ou expressions régulières, regexp) pour s’assurer que la réponse est bien numérique.
Pour tester ce script, copier le contenu dans un fichier que vous nommerez par exemple « interactif.sh », auquel vous donnerez les droits d’exécution :
chmod +x interactif.sh
Puis on le lance simplement :
./interactif.sh
Sources :
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html
http://tldp.org/LDP/abs/html/refcards.html#AEN21811
http://www.linuxquestions.org/questions/programming-9/bash-scripting-check-for-numeric-values-352226/
http://tldp.org/LDP/abs/html/arrays.html
5 Commentaires to Ecrire un script bash interactif avec saisie par l’utilisateur
Ajouter un commentaire
Publicité – liens
Calendrier
Recherche
Derniers articles
- Ubuntu – Xubuntu 20.04 – fix black screen after resume screensaver on thinkpad T410
- How to delete all resources in azure to avoid charges after trial on your forced credit card registration
- Proxmox – ZFS – Dead drive on active VM, recover from replicated disk
- Restrict access to proxmox web admin interface
- Migrate your ESXI VMs to proxmox ZFS
Tresronours Twitter
Keywords cloud topic
Membre de la FSF
Liens qui vont bien
Mots clés vrac – keyword cloud
License du contenu – CC By NC SA
Archives
- Ubuntu – Xubuntu 20.04 – fix black screen after resume screensaver on thinkpad T410
- How to delete all resources in azure to avoid charges after trial on your forced credit card registration
- Proxmox – ZFS – Dead drive on active VM, recover from replicated disk
- Restrict access to proxmox web admin interface
- Migrate your ESXI VMs to proxmox ZFS
- Install your VPN server with pi-hole on OVH VPS in 30 min
- Using raspberry pi 3 as wifi bridge and repeater and firewall
- Raspberry 3 – create a wifi repeater with USB wifi dongle
- raspberry 3 – routeur pare feu point d’acces wifi avec filtrage pub et tracking – router firewall access point with ads and tracking filtering
- Dell XPS 13 touchpad – corriger la sensibilité
- Utiliser Zazeen set top box depuis une connexion videotron
- Fermeture de mon compte facebook – la dernière goutte
- Choisir un kernel par defaut au demarrage de Centos 7.2 – configuration grub2
- Openvpn access server 2.0.25 et android
- Régler la luminosité du laptop par ligne de commande
- chromium outlook web app version complete sous linux
- Nexus 7 2012 – android 5 lollipop solution au probleme de lenteur
- HDD led sur Xubuntu – xfce
- xubuntu 14.04 verrouiller ecran de veille et desactiver mise en veille a la fermeture de l’ecran
- Authentification avec Radmin en utilisant Wine sur Gentoo
- Patcher bash sur une distribution plus supportee comme fedora 11
- Zimbra desktop sous xubuntu 14.04 64bit – fix
- xubuntu 12.10 probleme de son avec VLC – pulse audio – alsa – toshiba L855D – solution
- Evolution sous xubuntu 12.10 – bug affichage a la configuration – solution temporaire
- Booster son acces internet en changeant de DNS pour opendns
- Serveur DLNA sous ubuntu – minidlna
- sshfs sous windows – dokan sshfs
- xubuntu 11.10 Installer le plugin java pour firefox
- Installer Google Earth sur Xubuntu 11.10
- Installer nagios sur Fedora 11 depuis les sources
- Configurer varnish-cache avec des virtualhosts, apache, fedora, redhat, centos
- Installer Varnish depuis les sources sur Fedora 11
- Replication mysql – Configuration maitre-esclave
- Journée anti DRM – le 4 Mai 2011
- Configurer le menu grub en interface graphique – startupmanager – ubuntu gnu linux
- Déconnexions avec le routeur sans fil thomson TG585 v7 et les coupures adsl
- Installation de GFS pour utilisation avec volume DRBD sous Centos 5.5 ou redhat
- Installation DRBD sur Centos 5.5 ou redhat
- mod_pagespeed pour apache mise à jour – update
- Centos 5- Redhat, reconstruire un rpm depuis rpms – rpmbuild et installer openvpn
- Ubuntu : pare feu ufw en ligne de commande – iptables frontend
- Faire tourner Redmine sur fedora 11 avec une installation rubyonrails un peu trop récente
- Installer ruby on rails sur fedora 11
- Imaps avec stunnel – ajouter le ssl au serveur imap port 993
- Configurer FTPS ssl/tls avec proftpd sur fedora 11
- Configurer iscsi client et serveur sous GNU/Linux – stockage reseau ou SAN personnel sur IP
- GuiguiAbloc, un blogue qui merite d’être connu – linux – geek
- Utiliser SFLphone avec une ligne SIP OVH
- Resoudre probleme d’espace sur /boot sous ubuntu – kernel
- Installer Google earth 6 sur ubuntu 10.10 64 bit x86_64
ton tableau n’est pas associatif, ce sont juste 2 vecteurs (array) simples et juxtaposés…
Donc pour répondre au commentaire voici un lien vers article sur les tableaux associatifs en BASH :
http://www.admin-linux.fr/?p=2724
Au moins, ça donne une information plus intéressante que « ton tableau n’est pas associatif » ;) et comme ça tout le monde apprend.
Très bel exemple. Merci beaucoup.
salut je veut ecrir un script shell qui permet de creer un utilisateur en interactive
Salut, basé, pour ca je ferais appel dans un script bash a la commande adduser (ou useradd), en demandant le username voulu, le password, puis je lancerais adduser mon-user -p mon-password
ou j’aurai demandé le username chargé dans une varialbe avec read mon-user; et read -s mon-password pour le mot de passe (read -s lit la valeur sans l’afficher).
Voila une piste.