Gerer une commande avec Parametres + Argument [ Ksh Script Shell ] - Programmation
Marsh Posté le 26-05-2002 à 09:12:37
Bonjour  ![[:kuroineko] [:kuroineko]](https://forum-images.hardware.fr/images/perso/kuroineko.gif) 
  
 
ça depand du type d'argument que tu veux utiliser. 
 
mais une solution simple serait peut etre la creation et lecture d'un fichier temporaire (penses à le mettre dans /tmp pour etre bien propre)  
 
un exemple simple serrait de mettre dans le fichier temp : 
 
ARG1 ARG2 ARG3 ARG4 etc.... 
si tu as des modifs d'arguments, tu peux gerer un fichier par argments et le mettre à jour à chaque modif de l'argument 
on peut manipuler l'affichage des resultat avec AWK et scripter de telle sorte que par comparaison de valeur, de fichier, par concatenation de fichier, tu devrais pouvoir t'en sortir plus facilement. 
 
Encore plus propre et moins gourmand en access disque & memoire, serrait de faire un tableau de variables (1 par argument dans un seul fichier temporaire & utiliser awk comme pointer) et de le manipuler un peu comme les pointeurs en C++ mais en plus simple. penses aussi aux commandes tail & gerp  
________________ 
 
 
comment recuperé une variable dans un fichier temp  
______________ 
toto.tmp 
valeur_old valeur_tmp valeur_arg_1 valeur_arg3 valeur_arg4  
 
_____________ 
 
où pour la mettre le 4eme argument dans une variable 
variable =`cat /tmp/toto.temp | awk '{print $4}'` 
 
et ensuite tu peux te servir de variable comme tu veux...en l'appelant par $variable... 
 
en jouant comme ça sur un fichier temporaire tu devrais pouvoir ecrire un tableau dans le fichier temp et avec les pipes de la commande awk tu peux manipuler ça tres facilement. 
 
!!! ATTENTION !!!    aux ' & ` de la commande awk
 aux ' & ` de la commande awk   
  
!!!ATTENTION !!! 
 
 
tu trouveras pleins d'exemples plus complexes et mieux expliqués surtout sur internet et dans la page man de awk... 
 
salut 
 ![[:kuroineko] [:kuroineko]](https://forum-images.hardware.fr/images/perso/kuroineko.gif) 
 
Marsh Posté le 26-05-2002 à 11:57:26
Le probleme c qu'il ya beaucoup de cas a gerer 
il faut penser par exemple que je n'ai que 2 options valides 
 
-p et -u 
 
la seule option qui admet des parametre est -u 
 
donc si la personne entre ca 
 
[B]command -u arg1 arg2 arg3 -p arg4 arg5 -u arg6 arg 7[/B] 
 
je ne doit recuperer que arg1,2,,3,6 et 7 car il suivent un -u et pas les 2 autre tu comprend ?? 
 
et encore un probleme imagine que le mec entre ca : 
 
[B]command -u arg1 arg2 -g -t -u arg3[/B] 
 
bah je doit ignorer -g et -t et ne pas les traiter car ce ne sont pas des argument valide 
 
c'est la mon probleme, je ne voit pas quel structure de programme je pourrais utilisé 
 
merci  
 
Marsh Posté le 26-05-2002 à 12:25:49
Oui je vois se que tu veux dire mais là tu semble etre plus feru que moi en developpement alors pour t'aider ....je te donnerai comme conseil de  respecter le standard UNIX des lignes de commande 
 
 
commande -xxxxxx arg1 arg2 arg3 
 
command -upgt dans l'exemple que tu donne 
 
alors tu peux verifier la validité par comparaison de chaine de l'argument 1 puisqu'il contient -upgt  
en definissant les combinaisons possibles tu doit avoir 5 ou 6 cas possibles  
 
donc tu pourrais faire un  
case "SUR la STRING argument1" 
     u)...;; 
     up)...;; 
     ug)...;; 
esac 
 
par contre si tu veux pouvoir faire un parametrage par argument 
 
ARG1 u 
ARG2 ut 
ARG3 ug 
 
là le mieux est peut etre de repenser le systeme par  
une lecture des arguments seuls  puis de modifier leurs parametres par un menu.... 
 
c'est pas propre et chiant à faire... mais j'ai pas d'autres idées... 
 
 
désolé. Je peux pas trop t'aider j'ai touché à enormement de langage differents mais juste pour faire mumuse je me suis jamais interessé en profondeur au developpement alors je manque d'experience pour t'aider.  
 
Marsh Posté le 26-05-2002 à 12:27:25
ou mieux encore tu fait AUCUN argument en ligne et tout dans un menu. 
 
tu entre argument et tu coches ses paramettres  
le suivant et ainsi de suite pui tu valide le tout. 
Marsh Posté le 26-05-2002 à 12:36:04
c gentil de me donné c details  
 
 
mais un probleme c que je n'ai pas le choix 
je suis obligé de faire ca de la maniere que je t dite 
 
la est le probleme, et c largement faisable car plusieur perosnne l'on deja fait 
 
suffit de penser que toute les commande unix sont basé la dessus  
 
Marsh Posté le 26-05-2002 à 12:52:19
Ben je suis desolé mais là ça devient d'un niveau trop elevé pour moi... 
 
à bientot 
Marsh Posté le 25-05-2002 à 12:27:29
Voila je cherche desesperement comment je pourrais gerer une commande créer en Ksh avec des arguments.
Exemple
Commande -u arg1 arg2 arg3 -p
Pour un cas simple c'est facile mais quand on met un parametres mauvais ou qu'on enchaine plusieurs fois -u ou -p cela pose beaucoup de probleme
[B]Personne n'aurais un algo pour gerer ca ?[/B]
Jai essayer les while imbriqué, le getopts avec optargs etc... mais toujours des problemes
merci