#1 Le 22/05/2013, à 06:22
- Atomo
Script d'installation rapide
Bonjour,
Je viens de retrouver un ancien script tout moche à moi et je voudrais l'améliorer (les variables étaient codées en dur )
C'est un script qui parcours une liste de programmes et demande à l'utilisateur si il souhaite l'installer (pratique quand on réinstall souvent :> )
Voilà le programme :
function affichage()
{
clear
ecran="$ecran$1"
echo -e "$ecran"
read reponse
ecran="$ecran [$reponse]\n"
}
function reponse()
{
reponse=''
while [ -z "$reponse" ] || [ "$reponse" != 'y' -a "$reponse" != 'n' ]
do
affichage "$1"
done
}
function ajoute()
{
programmes="$programmes $1 "
}
clear
programmes=""
ecran='Reponder par : "y" ou "n"\n\n'
echo -e "$ecran"
while read name description
do
echo -e "$description"
reponse "installer $name ($description)"; if [ "$reponse" == 'y' ]; then ajoute "$name" ; fi
done < file.txt
echo $programmes
Le fichier file.txt est structuré ainsi :
firefox[space]Navigation web libre et modulabe
apache[space]Serveur Web
etc....
Le problème se trouve ici : "while read name description" car ça rentre en conflit avec ma fonction "reponse" et ça part donc en boucle infinie
Je pense que je devrais faire un "while read line" et ensuite utiliser awk ou sed dessus pour obtenir mes deux variables "name" et "description" mais je n'y connait rien dans ces fonctions
Quelqu'un pour m'aider ?
Merci d'avance.
Hors ligne
#2 Le 22/05/2013, à 06:30
- Atomo
Re : Script d'installation rapide
J'aurais pas dû avoir si peur d'awk, j'ai réussi à faire ça :
awk '{print substr($0,0,index($0," ")+1)}'
awk '{print substr($0,index($0," ")+1)}'
J'vais essayer de l'utiliser maintenant
Hors ligne
#3 Le 22/05/2013, à 06:41
- pingouinux
Re : Script d'installation rapide
Bonjour,
Je pense que le problème vient de ce que, dans la boucle while read name description, l'entrée standard est file.txt, et que reponse lit ce fichier et non le terminal.
Ajouté :
Essayer comme ceci
tty=$(tty)
while read name description
do
echo -e "$description"
reponse "installer $name ($description)" <$tty; if [ "$reponse" == 'y' ]; then ajoute "$name" ; fi
done < file.txt
Dernière modification par pingouinux (Le 22/05/2013, à 07:15)
Hors ligne