C'est probablement très simple, mais existe-t-il un moyen simple d'écrire une commande une fois dans la console et de l'exécuter n
fois, où n
est spécifié lors de l'exécution? Quelque chose comme ça:
repeat 100 echo hello
Existe-t-il une telle commande (supposez une installation Linux typique)?
Ou devrais-je écrire pour faire une sorte de boucle en bash?
command-line
unix
Jørn Schou-Rode
la source
la source
for i in {1..100}; do python3 foo.py ; done
et je veux en fait obtenir le temps d'exécution (pour voir à quelle vitesse)time for i in {1..100}; do python3 foo.py ; done
, puis CTRL-C ne pourra pas arrêter la boucleOui, vous aimeriez:
ou, plus court:
la source
En plus des méthodes plus intégrées, vous pouvez utiliser un utilitaire externe qui génère une séquence de nombres.
la source
La syntaxe de la boucle for est idiote. C'est plus court:
la source
Je n'ai pas trouvé d'outil Linux "standard" pour faire ce travail, mais je conserve généralement mes fichiers dot (.bashrc, .vimrc etc.) d'une installation à l'autre, donc ce qui suit est assez "standard" si vous le regardez depuis la perspective de conserver vos fichiers dot dans de nouvelles installations:
À la fin de votre .bashrc ou .bash_aliases, mettez la définition suivante:
Enregistrez le fichier et rouvrez le shell ou exécutez
source /path/to/.bashrc
ousource /path/to/.bash_aliases
, selon votre choix, dans un shell existant.C'est ça! Vous devriez pouvoir l'utiliser de la manière suivante:
repeat 100 echo hello
repeat 84 ~/scripts/potato.sh
etc.
la source
Actuellement, aucune des autres réponses n'utilise des outils Unix standard, ce que demande la question de titre.
Ils utilisent tous des commandes non standard (
seq
oujot
) ou des extensions de shell (extension defor
boucle ou d'accolade de style C ), c'est-à-dire qu'ils ne respectent pas tous la norme POSIX.Voici une méthode portable qui devrait fonctionner avec n'importe quel shell et système d'exploitation compatible POSIX:
la source