#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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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}
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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.
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
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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}".
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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