Linux/UNIX:连续运行命令多次

时间:2020-01-09 10:37:32  来源:igfitidea点击:

我如何在Linux或UNIX之类的操作系统下运行foo命令10次(或n次)?
您可以使用bash shell循环(重复运行代码或命令)来运行命令10次,如下所示。

在bash/ksh/zsh中,有许多种方法可以运行N次命令。
根据您的shell使用语法。

语法

语法为:

## 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

例如,运行UNIX date命令五次,输入:

for i in {1..5}; do date; done

您也可以使用bash这样的c语言来实现循环语法:

for ((n=0;n<5;n++))
do
command1
command2
done

tcsh/csh/ksh和其他Shell的for循环语法可能会因版本而异。

使用while循环

使用基于bash/sh/ksh posix的while循环,如下所示:

## define end value ##
END=5
## print date five times ##
x=$END 
while [ $x -gt 0 ]; 
do 
  date
  x=$(($x-1))
done

对zsh用户重复

如果您使用的是Z Shell(zsh)

repeat N { command }
repeat N { /path/to/script }
## print date five times on screen ##
repeat 5 { date }

seq命令

要打印数字序列,也可以使用seq命令。
语法为:

seq LAST
seq FIRST LAST
seq FIRST INCREMENT LASE
seq LAST | xargs command
seq FIRST LAST | xargs command
seq FIRST INCREMENT LASE | xargs command

要仅打印五个数字,请运行:

$ seq 1 5

或者

$ seq 5

输出示例:

1
2
3
4
5

使用xargs命令运行date命令五次:

$ seq 1 5 | xargs -I{} date

输出示例:

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

可以将xargs与多个命令行参数一起使用,如下所示:

$ seq 1 5 | xargs -I{} sh -c "date && sleep 1"

也可以使用parallel命令:

$ seq 5 | parallel 'echo {}'
$ seq 5 | parallel 'echo Hello $USER, {} times.'

有关更多信息,请参见以下命令的手册页:

$ man parallel
$ man xargs
$ man seq

有关使用Perl或Python的说明

您可以按以下方式使用python或Perl来运行date命令5次:

#!/usr/bin/perl
for $i (1 .. 5) {
   system("date");
}

Python示例:

#!/usr/bin/python
# Run unix date command 3 times 
import os;
for x in range(0,3):
    os.system("date")