Linux / UNIX: Run Command a Number of Times In a Row
Linux / UNIX: Run Command a Number of Times In a Row
last updated in Categories BASH Shell, Linux, UNIXHow do I run “foo” command 10 times (or n times) under Linux or UNIX like operating systems?
You can use bash shell loop (run code or command repeatedly) to run a command 10 times as follows.
there are many ways to run a command N times in bash/ksh/zsh. Use syntax as per your shell.
Syntax
The syntax is:
## run command 10 times for i in {1..10}; do commandNameHere; done ## run script 20 times for i in {1..10}; do /path/to/cache.script.sh; done |
For example, run UNIX date command five times, enter:
for i in {1..5}; do date; done |
You can also use c like bash for loop syntax:
for ((n=0;n<5;n++)) do command1 command2 done |
The for loop syntax for tcsh / csh / ksh and other shell may changes from version to version.
Using while loop
Use the bash/sh/ksh posix based while loop as follows:
## define end value ## END=5 ## print date five times ## x=$END while [ $x -gt 0 ]; do date x=$(($x-1)) done |
repeat for zsh users
If you are using the Z shell (zsh)
repeat N { command } repeat N { /path/to/script } ## print date five times on screen ## repeat 5 { date } |
Say hello to seq command
To print a sequence of numbers one can use the seq command too. The syntax is:
seq LAST
seq FIRST LAST
seq FIRST INCREMENT LASE
seq LAST | xargs command
seq FIRST LAST | xargs command
seq FIRST INCREMENT LASE | xargs command
To just print five number, run:
$ seq 1 5
OR
$ seq 5
Sample outputs:
1 2 3 4 5
Use the xargs command to run the date command five times:
$ seq 1 5 | xargs -I{} date
Sample outputs:
Tue Nov 28 00:32:52 IST 2017 Tue Nov 28 00:32:52 IST 2017 Tue Nov 28 00:32:52 IST 2017 Tue Nov 28 00:32:52 IST 2017 Tue Nov 28 00:32:52 IST 2017
You can use xargs with multiple commands line argument as follows:
$ seq 1 5 | xargs -I{} sh -c "date && sleep 1"
It is also possible to use the parallel command:
$ seq 5 | parallel 'echo {}'
$ seq 5 | parallel 'echo Hello $USER, {} times.'
See man page of the following command for more info:
$ man parallel
$ man xargs
$ man seq
A note about using Perl or Python
You can use python or Perl as follows to run date command 5 times:
#!/usr/bin/perl for $i (1 .. 5) { system("date"); } |
Python example:
#!/usr/bin/python # Run unix date command 3 times import os; for x in range(0,3): os.system("date") |