|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
j'ai un menu standard ex: case $choix in 1) cat hostPROD.lst |more ; echo press enter ; read DUMMY ;; 2) fctlsusergene ;; 3) fctlsgrpgene ;; 4) fctgetUgeneric ;; 5) echo entree parametre ${param1} ; read DUMMY Voilà je souhaite quand je tape la ligne 5 récuperer en parametre un hostname qui permettra de lancer une fonction qui fait par exemple un "ls" sur le hostname passe en paramètre. Merci de votre retour DorisNemo |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bein read, justement.
|
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
désolé Luc je ne comprends pas ta réponse !
ma variable n'est pas renseigné. quand je tape le choix 5 avec une valeur la variable n'est pas initialisé param1=$1 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
dorisnemo a écrit :
> désolé Luc je ne comprends pas ta réponse ! > ma variable n'est pas renseigné. > quand je tape le choix 5 avec une valeur la variable n'est pas > initialisé param1=$1 > J'ai du mal à saisir. Dans ton script, lors du choix 5 tu va renseigner une variable de nom DUMMY. A aucun moment, tu n'as affecté de valeur à la variable param1. $1 est un paramètre de ligne de commande, passé au lancement du script. Si tu veux que param1 prenne la valeur de ce paramètre lors du choix 5, il te suffit d'écrire: param1=$1 dans la branche 5 du case. Cordialement Jean-Marc |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
dorisnemo a écrit :
> 5) echo entree parametre ${param1} ; read DUMMY Si tu faisais : 5) read param1 ; echo entree parametre ${param1} ça fonctionnerait beaucoup mieux.. ![]() |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
merci de ton retour, voici comment j'ai fait grace à ta réponse sur
le read 9) read MACHINE?"Entrer le nom de la machine = " echo "le nom entré est ${MACHINE}" read VALIDATION?"Validez vous le choix oui/non: " fctread ;; ainsi ma fonction récupère le paramètre et peux executer ma commande Gérald |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
On 3 May 2006 03:13:06 -0700, dorisnemo wrote:
> merci de ton retour, voici comment j'ai fait grace à ta réponse sur > le read > > 9) > read MACHINE?"Entrer le nom de la machine = " > echo "le nom entré est ${MACHINE}" > read VALIDATION?"Validez vous le choix oui/non: " > fctread > ;; > > ainsi ma fonction récupère le paramètre et peux executer ma commande [...] Note que read 'var?prompt' est specifique a ksh/zsh (et tu as oublié de mettre ? qui est un charactere special au shell entre quotes). La syntaxe standard est: printf 'Entrer le nom de la machine = ' read MACHINE Note que sans -r, read considere "\" comme un caractere d'echappement (pour le separateur, pour le saut de ligne (et pour lui-meme). read va aussi supprimer les blanks en debut et fin (a moins qu'IFS ait ete modifié). En gros si tu entres " <Tab>to\to\ ti\<NL>ti ", MACHINE contiendra: "toto titi". Change en IFS= read -r MACHINE si ce n'est pas ce que tu veux. -- Stephane |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
dorisnemo a écrit :
> merci de ton retour, voici comment j'ai fait grace à ta réponse sur > le read > > 9) > read MACHINE?"Entrer le nom de la machine = " > echo "le nom entré est ${MACHINE}" > read VALIDATION?"Validez vous le choix oui/non: " > fctread > ;; > > ainsi ma fonction récupère le paramètre et peux executer ma commande > Gérald > C'est dans fctread que tu traites la réponse à la validation du choix ? Jean-Marc |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
non la validation je l'ai ajouter ensuite de la manière suivante :
############### read VALIDATION?"Validez vous le choix oui/non: " if [[ ${VALIDATION} = oui ]] then fctfindrepnormes elif [[ ${VALIDATION} = non ]] then clear ; echo "\n\n\n\t\t\t\t OPERATION ANNULEE (appuyer sur entree)" ; read DUMMY else badchoice fi ;; ########################## merci Stephane pour ton retour, je vais modifier mon script en conséquence. Gérald |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
2006-05-4, 00:54(-07), dorisnemo:
> non la validation je l'ai ajouter ensuite de la manière suivante : > > ############### > read VALIDATION?"Validez vous le choix oui/non: " > if [[ ${VALIDATION} = oui ]] > then > fctfindrepnormes > elif [[ ${VALIDATION} = non ]] > then > clear ; echo "\n\n\n\t\t\t\t OPERATION ANNULEE (appuyer sur entree)" ; > read DUMMY > else > badchoice > fi > ;; > ########################## > > merci Stephane pour ton retour, je vais modifier mon script en > conséquence. [...] Tu peux remplacer les if [[ $VALIDATION = oui ]] par des if [ "$VALIDATION" = oui ] tant que tu y es. ou encore mieux: case $VALIDATION in oui | yes | o | y) ...;; non | no | n) ...;; esac Et echo par printf. echo "\n\t" ne marchera pas avec tous les shells. En particulier, avec ksh, ca depend de beaucoup de choses. Le meme script, avec le meme shell peut cesser de marcher du jour au lendemain, ou peut marcher avec certains utilisateurs et pas avec d'autres. Il est recommandé (par POSIX notemment) de laisser tomber echo et d'utiliser "printf" a la place. Note que si tu lance "read" sans argument, c'est equivalent a "read REPLY". -- Stéphane |
|
![]() |
| Outils de la discussion | |
|
|