Problème de script aidez moi s'il vous plait

Fermé
Samefly - 1 oct. 2016 à 12:09
 Utilisateur anonyme - 1 oct. 2016 à 18:35
Bonjour tout le monde !

Bon voilà j'ai un petit script à faire pour les cours en shell qui demande d'afficher les arguments dans l'ordre lexicographique. Le script n'est pas compliqué en effet mais j'ai quelque soucis de syntaxe. Voici mon script :

for (( i=1; i<=$#; i++ ))
do
echo $$i ---> (c'est ici que ça foire je n'arrive pas à faire comprendre à la machine qu'il faut interpréter $$i soit $1 , $2 , $3, etc)

done

Si quelqu'un aurait la solution ça serait cool de la partager ! Je lui fais des bisous en échange :-D
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
1 oct. 2016 à 13:52
hello
for (( i=1; i<=$#; i++ )); do echo ${!i}; done
3
Qu'est ce que le "!" ? pourquoi $i ne fonctionne pas à l'interieur des accolades ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Utilisateur anonyme
1 oct. 2016 à 15:24
Salut,

Le
!
est une indirection. C'est le pendant de la commande eval utilisée à l'époque.
0
Utilisateur anonyme
1 oct. 2016 à 15:51
Je ne comprends pas comment ça fonctionne, d'autres exemples que ceux du lien ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Utilisateur anonyme
1 oct. 2016 à 16:04
$ A=B

$ B=Bonjour

$ echo ${A}
B

$ echo ${!A}
Bonjour
0
Utilisateur anonyme
1 oct. 2016 à 16:13
Ah d'accord
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
1 oct. 2016 à 12:18
Salut,
révise tes cours sur les tableaux...
0
Je n'ai pas eu de cours sur le shell ou sur les tableaux..
0
Merci Flachy Joe j'ai trouvé la solution en parcourant la liste $* avec le for :

for i in $*
do
echo $i
done

Je dois faire la même chose avec le tant que et la pareil je suis bloqué avec cette histoire de $$i
0
Utilisateur anonyme
1 oct. 2016 à 18:35
salut,

il est préférable de parcourir
$@
:
$ maFonc() { for i in $*; do echo "$i"; done; }
$ maFonc bla 'bla bla' bla
bla
bla
bla
bla
$ maFonc() { for i in "$@"; do echo "$i"; done; }
$ maFonc bla 'bla bla' bla
bla
bla bla
bla
$
et d'utiliser des guillemets !
0
J'ai trouvé une solution sur un autre forum (désolé mais jeuxvidéo.com est plus rapide que vous malheureusement) :
while [ $# > 0 ]
Do
Écho $1
Shift
Done

ça me semble correct mais lorsque je lance mon script dans le terminal celui ci semble coincé dans une boucle infini
0
while (test "$#" -gt 0)
do
echo $1
shift
done

Merci CCM.
0