|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Bonjour,
Débutant en script bash, je ne sais comment faire une partie de mon script !!! Je souhaite lancer un script avec un menu (ok)...... demander à un moment à l'utilisateur d'indiquer plusieurs noms de répertoires, et effectuer un certain nombre d'action en fonction du nombre et des noms. Ex: Si l'utilisateur indique 1 répertoire alors lancer la commande X, si 2 répertoires indiqués alors lancer 2 fois la commande X....... C'est donc une boucle sur le nombre d'arguments passés mais ....? Merci d'avance Bonne journée Cordialement |
|
|
10
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 055 ![]() |
Salut
Tu confonds les notions. Les arguments c'est les éléments passés au programme lors de son appel (les mots qu'on rajoute dans la ligne de commande). Or toi, tu poses une question et tu attends la réponse. Ce ne sont pas des arguments mais une réponse. Voici pour traiter les arguments Code bash :
Et voici pour demander et traiter la réponse Code bash :
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
||||
|
|
10
|
|
|
#3 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Bonjour,
Merci pour votre réponse ! Par contre, je viens de tester mais ne comprends pas exactement la mise en œuvre par rapport à mon script.(sachant qu'il peut y avoir 1 réponse par l'utilisateur mais aussi X réponses dont on ne connait pas le nombre avant et donc que ces réponses serviront Je mets la partie concernée ci dessous !!! Code :
....... ici plusieurs commandes à lancer obligatoire avant! ...... puis la partie.... ............ Code :
....puis d'autres commandes .... ....... Pour 1 réponse cela fonctionne correctement !!!! Par contre, le ant portlet.deploy ne fonctionne pas avec plusieurs réponses.....!!!! Merci d'avance pour votre aide et vos conseils. Bonne journée |
||||
|
|
10
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
en tant que membre de la 'fondation anti LS dans les scripts', et de la 'fondation anti `grep | awk`', je me dois de dire que ls -F | grep @$ | awk ..., c'est pas possible ! read lit sur l'entrée standard jusqu'à (sauf indication contraire) ce qu'on appuie sur la touche entrée. Si les indications à prendre en compte, qui sont fournies par l'utilisateur ne contiennent pas d'espaces, une boucle for devrait fonctionner. Sinon, il faut envisager l'emploi d'une boucle while : Code :
|
||
|
|
20
|
|
|
#5 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Bonjour,
Merci pour votre réponse. Le "ls" dans le script fonctionne et permet d'afficher tous les liens symboliques...! Avez vous un meilleur conseil pour lister l'ensemble des liens dans un répertoire ? Sinon comme déjà évoqué , je rencontre un problème lorsqu'il y a plusieurs réponses : Exemple : le ls renvoie A B C D E F l'utilisateur entre comme réponse A B E F La boucle devrait permettre de lire la réponse A , puis la réponse B, puis la réponse......sachant que les commandes lancées derrière prennent en compte les différentes valeurs Code :
Code :
Or il prend uniquement A !!! ? Merci d'avance Bonne journée |
||||
|
|
10
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
Citation:
Citation:
Code :
|
||||
|
|
20
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Ok pour le coté "ls".
Par contre, avez une piste pour le traitement des réponses (il faut que je traite la chaine de réponse ? ......) Idem avez vous un conseil par rapport à ce besoin ? Merci beaucoup d'avance |
|
|
10
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
dans la boucle, il faut utiliser la variable qu'elle initialise :
Code :
SHELL USER ... |
||
|
|
20
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Super !
![]() Tout fonctionne correctement....! Merci beaucoup pour vos réponses, conseils...... Bonne journée Cordialement |
|
|
10
|
|
|
#10 | ||
|
Membre actif
![]() Inscription : août 2011 Messages : 44 ![]() |
Bonjour,
En lisant ta demande initiale, je pense que ceci peut t'intéresser : Code :
|
||
|
|
10
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Merci pour le conseil !
Dernière petite chose ! (est-ce qu'il faut faire un nouveau post ?) Comment rediriger la(les) réponses dans un fichier ? Merci d'avance Bonne soirée |
|
|
10
|
|
|
#12 | |||||||
|
Expert Confirmé Sénior
![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 055 ![]() |
Citation:
![]() Soit tu lances ton script en le redirigeant, soit tu inclus la redirection dans le script lui-même... Attention, il s'agit ici d'un peu d'humour entre N_Bah et moi. En fait, j'ai l'habitude quand je veux traiter un flot entrant d'informations (c.a.d. des infos répétées sur plusieurs lignes comme par exemple ping), d'utiliser une boucle de traitement de ligne basée sur read. Exemple Code bash :
Ce mécanisme fonctionne pour toute commande. J'ai donc généralement l'habitude de l'utiliser pour tout et aussi pour traiter les fichiers en récupérant les fichiers via ls Code bash :
N_Bah me chambre gentiment chaque fois qu'il voit mes posts à ce sujet (son trait sur la ligue anti ls m'était destiné Toutefois ce n'est pas parce que ls peut être remplacé par * qu'il faut le négliger. Parce que imaginons que tu veuilles traiter les fichiers mais aussi leurs attributs, peut-être que tu seras amené à passer par un truc comme Code bash :
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|||||||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com