Melhor ajuda para o bash?

0

Eu precisava saber a sintaxe para for loop no bash em um determinado intervalo de números. Eu digitei help for , mas não tinha essa informação. Então, aprendi com algum artigo on-line que a sintaxe é for i in {1..N} . Existe uma ferramenta de ajuda de linha de comando para o bash que inclui informações completas sobre seu uso?

    
por user13107 14.01.2014 / 02:30

1 resposta

2
   for: for NAME [in WORDS ... ] ; do COMMANDS; done
    # the syntax
    Execute commands for each member in a list.
    # the member list refers to the [in WORDS ... ] part.
    # you see them in brackets because they are optional. 

    The 'for' loop executes a sequence of commands for each member in a list of items
    # the 'sequence of commands' refers to the COMMANDS part in the syntax.
    If 'in WORDS ...;' is not present, then 'in "$@"' is assumed. 
    # if the optional [in WORDS ... ] isn't there, it will loop over each
    # positional parameter.
    For each element in WORDS, NAME is set to that element, and
    the COMMANDS are executed.

    Exit Status:
    Returns the status of the last command executed.

O brace expansion no seu exemplo não é a sintaxe por si, mas fornece o [in WORDS ... ] de sua sintaxe adequada. você pode usar qualquer coisa que resulte na saída de palavras para que a sintaxe esteja correta, mas, dependendo do que você fizer, pode ter resultados inesperados. Como tentar ler linhas de um arquivo de texto ou lidar com números grandes por meio da expansão de chaves.

bash -c 'for x in {1..1000000000000}; do :; done'
bash: xmalloc: stringvec.c:40: cannot allocate 2909519884 bytes (94208 bytes allocated)

Como todas as 1000000000000 WORDS precisam ser expandidas antes da execução do loop for, se você não tiver o RAM para ele, o bash irá cometer erros.

Há também o estilo c para loops que possuem a sintaxe de for (( exp1; exp2; exp3 )); do COMMANDS; done , que help for também mostra.

Se você estiver interessado em aprender a escrever no bash, eu recomendaria a leitura: link

    
por 14.01.2014 / 02:50

Tags