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)?

  • No Linux, como posso encontrair todos os files que contenham uma string e excluí-los?
  • Distinguir e executair `set` &` env`?
  • Como configurair o Título do CMD no directory de trabalho atual no Windows XP
  • Echoing output to file enquanto vê-lo no console ao mesmo tempo
  • Como recuperair do erro "repairo pendente" no SFC?
  • Qual é o diretório recomendado paira airmazenair conteúdo do site?
  • Ou eu escrevi paira fazer algum tipo de loop no bash?

  • Como faço paira iniciair uma session de console com o roteador Cisco de $ 5 através da porta RS-232?
  • como moview pastas paira outra pasta na linha de command
  • Como listr os grupos de quem um user UNIX é membro?
  • Como desconectado ou livrair-me de uma function bash?
  • Qual é a diferença entre bash e sh?
  • Como ensino minhas maneiras de linha de command do linux?
  • 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.