Rechercher : dans
Par :

Script shell et parametre

Dernière réponse le 3 nov 2008 à 12:30:30 Kawa, le 3 nov 2008 à 10:38:18 
 Signaler ce message aux modérateurs

Bonjour,
j'ai decouvert les joies du script shell pendant mon stage en entreprise et je souhaite acquerir plus de competance dans ce domaine. Je me suis amuse a faire quelques petits script plus ou moins bete mais j'aurais une question

J'ai decouvert comment creer des fonctions et comment leur passer des parametres.
J'aurais aimer savoir comment faire avec un while ceci:

#!/bin/sh

I=0
for I in "$@"
do
    echo $I
done


En gros je cherche a parcourir ma liste d'arguments, qui est variable, pour pouvoir par la suite effectuer des actions dessus.
Ce que je cherche a comprendre aussi c'est comment pouvoir incrementer une valeur et recuperer la valeur du $MA_VALEUR

Merci d'avance
Configuration: Linux
Firefox 3.0

Meilleures réponses pour « script shell et parametre » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...

1

ahmed.ben.salem, le 3 nov 2008 à 11:48:04

Bonjour,
Bon pour le nombre des arguments est bien dans $#, alors voila ce que ta demander :

#!/bin/sh
i=0;
while [ "$i" -lt "$#" ];do
        echo "salut\n"
        i=$(expr $i + 1)
done

explication : while [ "$i" -lt "$#" ];do : tantque i < nbr d'argument.
echo "salut\n" : afficher "salut" et retour à la ligne.
i=$(expr $i + 1) : Incrémenté i.
ce script va afficher, suivant le nbr d'arguments, le msg : "salut".

;)

Répondre à ahmed.ben.salem

2

Kawa, le 3 nov 2008 à 11:51:36

Merci enormement pour ton explication, j'avais tenter quelquechose s'en approchant mais apparament pas la bonne syntaxe

saurais-tu aussi comment, au lieu d'afficher salut, afficher l'argument correspondant a la valeur de i?
merci :)

Répondre à Kawa

4

jipicy, le 3 nov 2008 à 12:02:13

Salut,

saurais-tu aussi comment, au lieu d'afficher salut, afficher l'argument correspondant a la valeur de i?
En gras ce qui a changé dans le script de départ :

#!/bin/sh
i=1;
while [ "$i" -le "$#" ];do
        echo "salut\n"
        eval echo "\$$i"
        i=$(expr $i + 1)
done
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

9

Kawa, le 3 nov 2008 à 12:26:57

Merci pour ton aide et merci a ahmed :)

Répondre à Kawa

3

ahmed.ben.salem, le 3 nov 2008 à 11:58:05

Re,

#!/bin/sh
i=0;
while [ "$i" -lt "$#" ];do
        echo $i
        echo " "
        i=$(expr $i + 1)
done


Explication:
Sera mieux avec un exemple ;)
hostname#./test.sh hello world
Ici le nbr des arguments est 2.
Rq: $i contient les arguments.
alors : $0 contient "hello"
$1 contient "world"
alors l'affichage sera : hello world ( avec l'espace " ") ;)

:)

Répondre à ahmed.ben.salem

5

Kawa, le 3 nov 2008 à 12:02:36

J'avais deja essayer de printer comme ca, mais j'obtiens les valeurs de i et non les arguments, c'etait pour ca que j'ai poser ma question

Répondre à Kawa

6

ahmed.ben.salem, le 3 nov 2008 à 12:04:42

Re,
je check et je te tien au courant ;)
:)

Répondre à ahmed.ben.salem

7

ahmed.ben.salem, le 3 nov 2008 à 12:26:12

Re,
voila reponse :

#!/bin/sh
i=0;
for i in "$*"
do
    echo $i
done


$* : il liste tous les arguments et là, tant que $i prend chaque eteration une valeur de la liste, et sans le premier argument, $0 = ./test.sh

Cdt,
:)

Répondre à ahmed.ben.salem

10

jipicy, le 3 nov 2008 à 12:27:58

Ben c'est son script de départ ça, non ? ;-))

La réponse au post #4 ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

11

 Kawa, le 3 nov 2008 à 12:30:30

Merci a tout les deux :)

Répondre à Kawa