Bonjour,
J'aimerai utiliser plus de 9 arguments dans un script shell mais je ne sait pas comment faire. Avez-vous une idée ?
Pour le moment j'utilise un script nommé "traitement" du style :
for i in $2 $3 $4 $5 $6 $7 $8 $9
do
{
...
Et j'envoie les argument par une ligne de commandes du style :
for i in cat toto
; do . traitement $i;done
Mais je suis arrivé à un cas ou j'ai une douzaine de colonnes dans mon fichier toto...
Merci d'avance.
# utiliser shift
Posté par netsurfeur . Évalué à 10.
Il faut décaler les arguments avec shift.
En remplaçant le for par un while:
# deja tu peux en avoir un 9e
Posté par NeoX . Évalué à 1.
si tu utilises $1 qui est le premier argument ($0 etant le programme appelé)
ensuite avec
tu vas effectuer ton traitement pour chacun des $i independamment des colonnes
ex :
donc la boucle for se contrefiche des colonnes, tu n'auras toujours qu'un seul argument à ce que tu mets dans le
do ... ;done
et cet argument aura le numero 1 ($1)
et sinon, comme dit lors des questions precedentes,
lire son cours, lire la doc, comprendre le cours ou la doc
et faire des essais
ca reste une bonne ecole
[^] # Re: deja tu peux en avoir un 9e
Posté par fearan . Évalué à 4.
et ?
marche très bien chez moi les 20 paramètres sont biens écris, avec en prime le nom du script ;)
pour connaitre le nombre d'argument : $#
pour parcourir tous les éléments
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: deja tu peux en avoir un 9e
Posté par gnumdk (site web personnel) . Évalué à 3.
Ca fait quoi ton bout de code à la fin ?
Moi, j'aurai écrit:
[^] # Re: deja tu peux en avoir un 9e
Posté par fearan . Évalué à 2.
ça fait exactement la même chose mais en mois de caractères à taper ;)
bon je le reconnais c'est une basherie :P
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: deja tu peux en avoir un 9e
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
Ben justement non, ce n'est pas un bashisme, c'est du shell standard…
[^] # Re: deja tu peux en avoir un 9e
Posté par fearan . Évalué à 2.
effectivement je viens de tester avec
/bin/sh
/bin/ksh
/bin/ash
/bin/zsh
ça marche nickel;
par contre ça ne passe pas pour csh et ses dérivés (ça ne passe pas non plus avec cmd, mais je m'y attendais) :)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: deja tu peux en avoir un 9e
Posté par gnumdk (site web personnel) . Évalué à 3.
Attention quand même pdksh is not ksh...
En clair, ce qui tourne sous ksh tourne sous pdksh mais pas l'inverse...
Genre, je serais fortement surpris que ce genre de truc tourne sur un bon vieux HPUX avec ksh93, mais je peux pas tester :)
[^] # Re: deja tu peux en avoir un 9e
Posté par fearan . Évalué à 2.
je viens de tester le for i dans un ksh93 ça passe tout seul; par contre je recommande vivement les accolades pour les ${15} et autre ça à tendance à faire de mauvaise blague sinon ;)
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: deja tu peux en avoir un 9e
Posté par fredlabidouille . Évalué à 1.
En fait j'utilise déjà le $1 plus loin dans le script...
# ${N}
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 10.
Pour accéder aux arguments ≥ 10, il faut mettre des accolades, c'est tout. Certains shells permettent de les utiliser sans les accolades mais ce n'est pas portable.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.