Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 hmm )
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 hmm
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 sad
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 tongue

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