<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
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.
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.”