Eu tenho iterado sobre números em várias ordens. Eu posso exibi-los em ordem crescente, mesmo com etapas como:
$ seq --separator="," 1 10
1,2,3,4,5,6,7,8,9,10
$ seq --separator="," 1 2 10
1,3,5,7,9
Também posso exibi-los em ordem inversa, nem contínua nem passo a passo.
$ seq --separator="," 10 1
$ seq --separator="," 10 2 1
Nenhuma saída para os comandos acima.
Meus detalhes do shell:
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Deixe-me saber como eu seria capaz de exibir os números em ordem decrescente?
command-line
seq
mtk
fonte
fonte
seq
é uma ferramenta completamente fora do padrão e não há garantia de que quaisquer duas implementações sejam iguais. Se você precisar escrever um loop que itere para trás sobre números no bash, usefor ((i=$max;i>=0;i--)) …
ou algo semelhante.Respostas:
use incremento negativo
fonte
Em geral, você não deseja usar
seq
, não é portátil (mesmo entre ambientes Linux padrão). Se você estiver usando ksh, zsh ou bash4 +, poderá usar a expansão de chave:fonte
seq
não é padrão e, em seguida, usa a expansão de chave somente bash-4. ;)seq
não funciona.Outra maneira no bash puro, ksh ou zsh:
Uma maneira pura de POSIX sh:
fonte
for
A segunda expressão de deve ser o teste e a terceira a etapa.Agora, os POSIX padrão:
(curiosamente, com
mawk
(e em menor graugawk
também) muito mais rápido que o GNUseq
emi = 10000000
vez dei = 10
)Ou
(seria mais eficiente apenas com um pequeno número de iterações, especialmente com
bash
)Ou
(que suportaria números de qualquer tamanho, mas observe que após um certo número de dígitos (números maiores que 10 70 no código do idioma POSIX), as linhas seriam quebradas com barras invertidas)
fonte
BC_LINE_LENGTH=0
no ambiente. Não há tanta sorte em outras implementações.s=$s,$i
ou chamarecho -n
/echo \c
/printf
?Você pode reverter a ordem usando
tac
(cat in reverse). Mesmo queseq
deva se comportar de maneira diferente em vários sistemas, acho que o seguinte deve ser o mais portátil possível:fonte
Tente com:
Exemplo:
$ seq 10 -1 1
fonte