Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/12/2012, à 14:53

INSAT

Générer un liste dans une script?

Bonjour à tous, je débute en bash et je voudrais savoir s'il était possible de générer une liste dans un script.
Par exemple si je  veuxfaire "for i in 1 2 3 4 do echo $i ", est-il possible de faire directement un liste du genre for i in [1-4] ou [1..4]?

Merci pour vos lumières.

Hors ligne

#2 Le 18/12/2012, à 15:01

pingouinux

Re : Générer un liste dans une script?

Bonjour,

for i in {1..4}; do echo $i; done

Hors ligne

#3 Le 18/12/2012, à 15:18

credenhill

Re : Générer un liste dans une script?

hello

 printf "%d\n" {1..4}

Hors ligne

#4 Le 18/12/2012, à 15:22

tiramiseb

Re : Générer un liste dans une script?

Salut,
Alternative à la solution de pingouinux :

for i in `seq 1 4`; do echo $i; done

Avantage de "{1..4}" : intégré à bash donc très rapide
Avantage de "seq 1 4": universel (fonctionne dans d'autres shells) mais plus lent

Hors ligne

#5 Le 18/12/2012, à 22:28

INSAT

Re : Générer un liste dans une script?

Merci à vous. La méthode de pingouinux ne marche pas, ou peu être que je l'ai mal fait. J'opte donc pour ta méthode seb. Encore merci.

Hors ligne

#6 Le 18/12/2012, à 22:35

pingouinux

Re : Générer un liste dans une script?

Ma commande du #2 fonctionne en bash, et il me semble que c'est ce que tu demandais.

Hors ligne

#7 Le 19/12/2012, à 03:43

nesthib

Re : Générer un liste dans une script?

Si la commande de credenhill fonctionne celle de pingouinux devrait faire de même, à moins d'utiliser un shell étrange (comme csh) qui ne reconnaît pas la boucle for…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 19/12/2012, à 06:16

pingouinux

Re : Générer un liste dans une script?

Même en sh, la commande que je propose ne fonctionne pas, car {1..4} n'est alors pas reconnu.

# En bash
$ for i in {1..4}; do echo $i; done
1
2
3
4

# En sh
$ sh
$ for i in {1..4}; do echo $i; done
{1..4}

Hors ligne

#9 Le 19/12/2012, à 06:25

nesthib

Re : Générer un liste dans une script?

Certes, mais il en serait de même pour celle de credenhill qui utilise aussi {1..4} wink


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#10 Le 19/12/2012, à 06:33

pingouinux

Re : Générer un liste dans une script?

Exact, mais il semble que INSAT ait choisi la méthode de tiramiseb.

INSAT #5 a écrit :

J'opte donc pour ta méthode seb.

Hors ligne

#11 Le 19/12/2012, à 07:18

nesthib

Re : Générer un liste dans une script?

Je crois que j'ai lu trop vite tongue


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#12 Le 19/12/2012, à 10:08

Watael

Re : Générer un liste dans une script?

salut,

min=0; max=4; while test $min -lt $max; do min=$(( $min + 1 )); echo $min; done

et hop! plus de `seq` !

Dernière modification par Watael (Le 19/12/2012, à 10:13)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#13 Le 19/12/2012, à 10:10

tiramiseb

Re : Générer un liste dans une script?

Watael : je ne suis pas sûr que ta solution est plus efficace que seq... Et vu qu'elle utilise un truc spécifique à Bash ("$(("), dans ce cas autant utiliser "{1..4}".

Hors ligne

#14 Le 19/12/2012, à 10:12

Watael

Re : Générer un liste dans une script?

non, c'est posix!


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#15 Le 19/12/2012, à 10:20

tiramiseb

Re : Générer un liste dans une script?

Ah merde. Ok. Toutes mes excuses smile

Hors ligne

#16 Le 19/12/2012, à 10:56

credenhill

Re : Générer un liste dans une script?

indépendant du shell

$ awk 'BEGIN{for(;n < 4;)print ++n}'
1
2
3
4

Hors ligne