Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1739 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  problème shell bash sur variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème shell bash sur variables

n°739038
gigi12345
Posté le 09-10-2005 à 14:12:25  profilanswer
 

Bonjour,
 
Voila je commence la programation sous linux et je rencontre quelques difficulté au niveau des variables.
 
En effet quand on fait appel a un programme on lui passe plusisieurs paramètres.
 
ex : on appelle le script test avec 3 arguments args1 args2 et args3 ce qui donne
 
test args1 args2 args3
 
args1 à 3 sont respectivement sotcké dans $1 , $2 , $3  et $# compte le nombre d'arguments jusqu'ici pas de soucis.
 
Mais la ou ce se complique c'est que j'aimerais faire une boucle pour récupérer tt les argument 1 à 3 comment faire ?
 
ex :
for ((j=1 ; j <= $# ; ++j))
do
echo "$($j)"
done
 
le problème c'est que j'aimerais que le echo m'affiche mes 3 arguments qui sont args1 args2 et args3.
$j vaut 1,2 puis 3
et je n'arrive pas a lui faire prendre le $devant les chiffres pour qu'il m'affiche non pas 1, 2 et 3 mais $1 à $3.
 
Merci d'avance pour votre aide...
 
 

mood
Publicité
Posté le 09-10-2005 à 14:12:25  profilanswer
 

n°739045
sebchap
Share the knowledge
Posté le 09-10-2005 à 14:43:10  profilanswer
 

Tu as $* et $@ pour recuperer tous les arguments :)
Si tu veux recuperer seulement certains arguments, j'ai trouvé un truc qui peut peut-etre t'aider: ( http://madchat.org/coding/sh/write [...] ipt-fr.htm )

#parcourir la liste d'arguments
 
    while [ $# -ge 1 ]; do
            case $1 in
         process arguments...
            esac
            shift
    done


A adapter suivant ton porbleme.
 
Tu peux aussi lister les argument avec $* et des separateurs (varaible IFS) pour les utiliser avec cut, c'est un peu bourrin :D


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
n°739047
Pillow
'cos the trees won't talk
Posté le 09-10-2005 à 14:51:19  profilanswer
 

Waouh, je n'avais jamais vu cette question de ma vie, et en deux jours elle a été posée deux fois sur ce forum [:pingouino] Complot des modos du FBI ? [:pingouino]
 

for ((j=1 ; j <= $# ; ++j))
do  
echo ${!j}
done


 
 
Mais en bash, on écrirait plutôt ton bout de script ainsi :

for i in "$@"
do
        echo $i
done

Plus court, plus facile à lire, portable, bref smieux :o (n'est ce pas sebchap ?  :o )

n°739049
sebchap
Share the knowledge
Posté le 09-10-2005 à 14:56:23  profilanswer
 

STFU :fuck: :o
 
Il ne voulait peut-etre pas tous les arguments :o
 [:dawa_neowen]


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
n°739063
gigi12345
Posté le 09-10-2005 à 15:19:46  profilanswer
 

merci bcp pour vos reponses :)
 
en effet c'était bien le code suivant qu'il me fallait ;)
 
for i in "$@"  
do  
        echo $i  
done  
 
Merci bcp

n°739067
gigi12345
Posté le 09-10-2005 à 15:25:21  profilanswer
 

encore une petite question j'ai besoin que i commence à 2 comment faire ?

n°739070
sebchap
Share the knowledge
Posté le 09-10-2005 à 15:28:01  profilanswer
 

Essaye voir avec shift :)
 
a mettre avant le for, mais tu perds le contenu de $1 si tu ne l'as pas sauver dans une autre variable.


Message édité par sebchap le 09-10-2005 à 15:29:41

---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
n°739076
gigi12345
Posté le 09-10-2005 à 15:42:19  profilanswer
 

j'ai essayé mais ça ne marche pas  car j'ai besoin de $1 pour la suite de mon script
:'(

n°739082
sebchap
Share the knowledge
Posté le 09-10-2005 à 15:51:21  profilanswer
 

Dans ce cas, tun 'as qu'a la sauver dans une autre variable.

#!/bin/sh
buffer=$1
shift
for i in "$@"
do
echo $i
done


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
n°739083
gigi12345
Posté le 09-10-2005 à 15:51:27  profilanswer
 

c'est bon je me suis débrouillé :)
j'ai tt simplement copié $1 dans une autre variable.
Grand merci a vous pour votre aide ;)

mood
Publicité
Posté le 09-10-2005 à 15:51:27  profilanswer
 

n°739084
sebchap
Share the knowledge
Posté le 09-10-2005 à 15:52:01  profilanswer
 

Et non, tu ne m'auras pas grillé :o
:D


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.
n°739085
jlighty
Posté le 09-10-2005 à 15:52:17  profilanswer
 

tu fais :

Code :
  1. for i in `seq 2 $#`


ça devrait passer

n°739089
sebchap
Share the knowledge
Posté le 09-10-2005 à 15:55:10  profilanswer
 

jlighty a écrit :

tu fais :

Code :
  1. for i in `seq 2 $#`


ça devrait passer


oui, encore mieux :)


---------------
BOFH excuse #400:We are Microsoft.  What you are experiencing is not a problem; it is an undocumented feature.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  problème shell bash sur variables

 

Sujets relatifs
problème avec konquerorProblème avec Aireplay avec Whoppix
Probleme install mandriva avec chipset via VT 6420Probleme d'installation XDTV ( bttv in use )
Problème utilisation Client Oracle et MySQL*plusproblème ajout utilisateur oracle
[RESOLU] Problème d'installation Debian SargeProbleme avec Audacity
probleme de mes raccourcisproblème police sous emacs, xterm ...
Plus de sujets relatifs à : problème shell bash sur variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR