Portable pour tous les shells et tout système qui a seq (car cette question est balisée)
Si le début est 1:
$ echo $(seq 10)
1 2 3 4 5 6 7 8 9 10
Autrement:
$ echo $(seq 5 10)
5 6 7 8 9 10
Avec bc:
$ echo $(echo "for (i=0;i<=1000;i++) i"| bc)
En bash
echo {1..10}
Remarque:
Cette solution d'écho fonctionne si la valeur de IFS contient une nouvelle ligne, ce qu'elle fait par défaut.
Par défaut, IFS est défini sur la séquence <space><tab> <newline> . Et est réinitialisé pour chaque démarrage propre du shell. Mais, si vous craignez que cela ait changé dans certains cas extrêmes, nous avons plusieurs solutions.
Sous bash, zsh, ksh, utilisez simplement: IFS = $ '\ t \ n' (sautez tout le reste de cette réponse).
Cependant, la réinitialisation de la valeur de IFS sous sh peut être complexe. Lisez le détail complet ici .
Désactivez IFS.
$ unset IFS; echo $(seq 5 10) #Always work.
fonctionnera toujours. À condition qu'il n'y ait pas de code ci-dessous (ou des scripts enfants) qui nécessitent un ensemble IFS, comme un script qui le fait OldIFS="$IFS"
.
Solution correcte.
Utiliser une astuce pour sh:
sh -c 'IFS="$(printf " \t\nx")"; IFS="${IFS%x}"; printf "$IFS"|xxd' # correct.
echo $(seq 1 10)