Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

para: Forma de casca tradicional

O original for A sintaxe do comando é:

for variável [dentro palavras]; Faz

comandos

feito

Onde variável é o nome de uma variável que será incrementada durante a execução do loop, palavras é uma lista opcional de itens que serão atribuídos sequencialmente a variável e comandos são os comandos que devem ser executados em cada iteração do loop.

O for comando é útil na linha de comando. Podemos facilmente demonstrar como funciona:



[me @ linuxbox ~] $ para i no ABCD; faça echo $ i; feito

ABCD

[me @ linuxbox ~] $ para i no ABCD; faça echo $ i; feito

ABCD


Neste exemplo, for recebe uma lista de quatro palavras: “A”, “B”, “C” e “D”. Com uma lista de quatro palavras, o loop é executado quatro vezes. Cada vez que o loop é executado, uma palavra é atribuída à variável i. Dentro do loop, temos um eco comando que exibe o valor de i para mostrar a tarefa. Tal como acontece com o enquanto e até loops, o feito a palavra-chave fecha o ciclo.


O recurso realmente poderoso de for é o número de maneiras interessantes de criar a lista de palavras. Por exemplo, por meio da expansão da cinta:



[me @ linuxbox ~] $ para i em {A..D}; faça echo $ i; feito

ABCD

[me @ linuxbox ~] $ para i em {A..D}; faça echo $ i; feito

ABCD


ou expansão do nome do caminho:



[me @ linuxbox ~] $ para i em distros * .txt; faça echo $ i; feito

distros-by-date.txt distros-datas.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt

[me @ linuxbox ~] $ para i em distros * .txt; faça echo $ i; feito

distros-by-date.txt distros-datas.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

distros-vernums.txt distros-versions.txt


ou substituição de comando:



#! / Bin / bash

# palavra mais longa: encontra a string mais longa em um arquivo while [[-n $ 1]]; Faz

se [[-r $ 1]]; então max_word = max_len = 0

para i em $ (strings $ 1); fazer len = $ (echo -n $ i | wc -c)

if ((len> max_len)); então max_len = $ len max_word = $ i

fi

feito

echo "$ 1: '$ max_word' ($ max_len caracteres)"

mudança fi

feito

#! / Bin / bash

# palavra mais longa: encontra a string mais longa em um arquivo while [[-n $ 1]]; Faz

se [[-r $ 1]]; então max_word = max_len = 0

para i em $ (strings $ 1); fazer len = $ (echo -n $ i | wc -c)

if ((len> max_len)); então max_len = $ len max_word = $ i

fi

feito

echo "$ 1: '$ max_word' ($ max_len caracteres)"

mudança fi

feito

para: Forma de casca tradicional


Neste exemplo, procuramos a string mais longa encontrada em um arquivo. Quando dado um ou mais nomes de arquivo na linha de comando, este programa usa o cordas (que está incluído no pacote GNU binutils) para gerar uma lista de “palavras” de texto legível em cada arquivo. o for loop processa cada palavra por vez e determina se a palavra atual é a mais longa encontrada até agora. Quando o loop termina, a palavra mais longa é exibida.

Se o opcional in palavras porção do for o comando é omitido, for o padrão é processar os parâmetros posicionais. Vamos modificar nosso palavra mais longa script para usar este método:



#! / Bin / bash

# longest-word2: encontra a string mais longa em um arquivo para i; Faz

if [[-r $ i]]; então max_word = max_len = 0

para j em $ (strings $ i); fazer len = $ (echo -n $ j | wc -c)

if ((len> max_len)); então max_len = $ len max_word = $ j

fi

feito

echo "$ i: '$ max_word' ($ max_len caracteres)"

fi feito

#! / Bin / bash

# longest-word2: encontra a string mais longa em um arquivo para i; Faz

if [[-r $ i]]; então max_word = max_len = 0

para j em $ (strings $ i); fazer len = $ (echo -n $ j | wc -c)

if ((len> max_len)); então max_len = $ len max_word = $ j

fi

feito

echo "$ i: '$ max_word' ($ max_len caracteres)"

fi feito


imagem

Como podemos ver, mudamos o loop mais externo para usar for em lugar de enquanto. Ao omitir a lista de palavras no for comando, os parâmetros posicionais são usados ​​em vez disso. Dentro do loop, instâncias anteriores da variável i foram alterados para a variável j. O uso de mudança também foi eliminado.


Por que eu?

Você deve ter notado que a variável i foi escolhido para cada um dos for exemplos de loop acima. Porque? Na verdade, nenhuma razão específica, além da tradição. A variável usada com for pode ser qualquer variável válida, mas i é o mais comum, seguido por j e k.



imagem

A base desta tradição vem da linguagem de programação Fortran. No Fortran, as variáveis ​​não declaradas que começam com as letras I, J, K, L e M são digitadas automaticamente como inteiros, enquanto as variáveis ​​que começam com qualquer outra letra são digitadas como reais (números com frações decimais). Esse comportamento levou os programadores a usar as variáveis ​​I, J e K para variáveis ​​de loop, uma vez que era menos trabalhoso usá-las quando uma variável temporária (como as variáveis ​​de loop geralmente são) era necessária.

Isso também levou ao seguinte gracejo baseado em Fortran: “DEUS é real, a menos que seja declarado inteiro.”


Top OS Cloud Computing na OnWorks: