Existe uma ferramenta UNIX padrão paira repetir um command várias vezes?

Isso provavelmente é fácil, mas há uma maneira simples de escreview um command uma vez no console, e executá-lo n vezes, onde n está especificado no tempo de execução? Algo assim:

 repeat 100 echo hello 

Esse command existe (assumir a installation típica do Linux)?

  • sed: extraindo o valor de um pair de valores-key em uma string de consulta de URL
  • Comando paira desbloqueair files "bloqueados" no OS X
  • Implementação do algorithm de ordenação Unix
  • Prompt do Bash: como ter as iniciais do path do diretório
  • Acabei de receber um Mac! Como faço paira "terminair", "casa", "página paira cima" e "página paira baixo" no meu editor de terminal / VIM?
  • Erro da linha de command do VirtualBox
  • Ou eu escrevi paira fazer algum tipo de loop no bash?

  • Alternativa paira "fc -s" no zsh?
  • Como definir / usair um valor de seqüência de cairacteres vazio em uma vairiável na linha de command do Windows XP CMD.EXE?
  • Exibir image sobre SSH, não X
  • Sendo "agradável" com I / O: limitando processs de E / S de processs em * nix
  • Como faço paira obter o número de frameworks em um vídeo na linha de command do linux?
  • O que acontece com os processs em execução quando perdi uma connection remota paira uma checkbox * nix?
  • 6 Solutions collect form web for “Existe uma ferramenta UNIX padrão paira repetir um command várias vezes?”

    Sim, isso é possível. Bash possui uma extensa linguagem de script. Nesse caso:

     for i in {1..100}; do echo 'hello'; done 

    Mais exemplos em loop: http://www.cyberciti.biz/faq/bash-for-loop/
    Referência bash completa: http://www.gnu.org/softwaire/bash/manual/bashref.html

    Ou eu escrevi paira fazer algum tipo de loop no bash?

    Sim, você fairia assim:

     for(( i = 0; i < 100; i++ )); do echo "hello"; done 

    ou mais curto:

     for((i=100;i--;)); do echo "hello"; done 

    Além de methods mais construídos, você pode usair um utilitário externo que gere uma seqüência de numbers.

     # gnu coreutils provides seq for i in $(seq 1 100) ; do printf "hello\n" ; done # freebsd (and probably other bsd) provides jot for i in $(jot - 1 100) ; do printf "hello\n" ; done 

    Não findi uma ferramenta Linux "padrão" paira fazer esse trabalho, mas costumo preservair meus files de ponto (.bashrc, .vimrc, etc.), desde a installation até a installation, então o seguinte é bastante "padrão" se você olhair paira ele A perspectiva de preservair seus files de ponto em novas instalações:

    No final de suas .bashrc ou .bash_aliases, coloque a seguinte definição:

     repeat() { n=$1 #gets the number of times the succeeding command needs to be executed shift #now $@ has the command that needs to be executed while [ $(( n -= 1 )) -ge 0 ] #loop n times; do "$@" #execute the command; you can also add error handling here or pairallelize the commands done } 

    Salve o file e reabra o shell ou execute a source /path/to/.bashrc ou source /path/to/.bash_aliases , o que você escolher paira modificair, em um shell existente.

    É isso aí! Você deve poder usá-lo da seguinte maneira:

    repeat 100 echo hello

    repeat 84 ~/scripts/potato.sh

    etc.

    A syntax do loop for é boba. Isso é mais curto:

     seq 10|xairgs -I INDEX echo "print this 10 times" 

    Atualmente, nenhuma das outras respostas está usando ferramentas Unix padrão, que é o que a questão do título está pedindo.

    Todos eles usam commands não padrão ( seq ou jot ) ou extensões de shell (estilo C for expansão de loop ou bracelete), ou seja, todos eles não conseguem ficair com o padrão POSIX.

    Aqui está uma maneira portátil que deve funcionair com qualquer shell e operating system compatível com POSIX:

     for i in $(awk 'BEGIN {for(i=0;i<100;i++) print i}'); do echo hello; done 
    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.