#1 Le 24/07/2008, à 10:59
- will4linux
[RESOLU] Arguments dans script bash
Salut !
je débute en programmation bash donc ne m'en veuillez pas si ma question vous semble simple
je fais un script ou je dois récupérer les arguments k à l de la ligne de commande, disons k=2 et l=4
Je fais un petit
for i in `seq $k $l`
do
echo "arg ${$i}"
done
mais le shell me renvoie l'erreur "Mauvaise substitution"... Comment fait-on ce genre de substitution ??
HELP !!!!
Merci d'avance
Dernière modification par will4linux (Le 26/07/2008, à 12:30)
Hors ligne
#2 Le 24/07/2008, à 14:06
- sensini
Re : [RESOLU] Arguments dans script bash
J'avoue que je ne connais pas du tout comment faire! Mais ça m'intéresse si quelqu'un connait
En attendant, tu peux toujours utiliser un tableau et la commande shift
http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)
Hors ligne
#3 Le 24/07/2008, à 14:45
- philippe_g
Re : [RESOLU] Arguments dans script bash
Bonjour,
Les paramètres d'un script sont $1 à $9 ($0 est le nom du script lui-même).
Pour en savoir plus:
Hors ligne
#4 Le 24/07/2008, à 16:02
- sensini
Re : [RESOLU] Arguments dans script bash
ça peut aller plus loin avec ${10} ${11} etc
mais je pense que ce que will4linux souhaitait faire c'est que dans sa boucle for, le $i soit remplacé par sa valeur (par exemple 3) et que ${$i} fasse la même chose que $3 ...:D
http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)
Hors ligne
#5 Le 24/07/2008, à 17:17
- tiky
Re : [RESOLU] Arguments dans script bash
Il s'agit d'une variable dynamique. J'avais déjà eu un besoin similaire en PHP. 10s sur google et la solution est là.
#!/bin/bash
k=2
l=4
for i in `seq $k $l`; do
echo ${!i}
done
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#6 Le 24/07/2008, à 20:23
- nofhrenn
Re : [RESOLU] Arguments dans script bash
salut si tu veux juste recuperer la liste de tes argument envoyer a ton script dans le genre:
monScript.sh arg1 arg2 tu peux fair ainsi
#!/bin/bash
for i in $* # $* representent le liste de tout les arguments passe
do
echo $i
done
voila en esperant bien avoir comprit la question
Hors ligne
#7 Le 24/07/2008, à 21:03
- tiky
Re : [RESOLU] Arguments dans script bash
Je pense que ça question étant comme récupérer dans une liste d'arguments, une séquence d'arguments compris entre k et k+l. Un petit détail pour le script:
#!/bin/bash
k=2
l=4
if [ $k -le $# ]
then
[ $l -ge $# ] && l=$#
for i in `seq $k $l`; do
echo ${!i}
done
fi
Il vérifie les bornes avant d'afficher les arguments. Si l est trop grand, on va jusqu'au dernier argument.
Dernière modification par tiky (Le 24/07/2008, à 22:29)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#8 Le 25/07/2008, à 09:10
- sensini
Re : [RESOLU] Arguments dans script bash
Il s'agit d'une variable dynamique. J'avais déjà eu un besoin similaire en PHP. 10s sur google et la solution est là.
Fais le mallin!! Quand on sait quoi chercher c'est facile aussi hein!!!
Un grand merci à toi ! je suis sûr que ça me servira, et j'y mets dessuite dans mon pense-bête bash !
http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)
Hors ligne
#9 Le 25/07/2008, à 10:27
- tiky
Re : [RESOLU] Arguments dans script bash
La réponse était sur le forum en plus... j'ai mis variable dynamique dans google mais c'était pas sûr que ça s'appelle comme ça sous Bash. Il n'y a pas beaucoup de langages qui proposent ça. En tout cas sous cette forme. En python c'est pas du tout comme ça qu'il faut faire.
Dernière modification par tiky (Le 25/07/2008, à 10:28)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#10 Le 26/07/2008, à 12:26
- will4linux
Re : [RESOLU] Arguments dans script bash
Merci à tous pour vos réponses !
La solution de tiky est exactement ce que je recherchais !! Merci tiky ^^
Allez je marque ce topic comme résolu !
Hors ligne