Linux/UNIX shell 如何重复运行命令?

时间:2019-11-20 08:53:05  来源:igfitidea点击:

在Linux或UNIX助攻,如何循环运行某个命令或者某个脚本?

shell 语法

## 运行命令10次
for i in {1..10}; do 命令; done
 
## 运行脚本10次
for i in {1..10}; do /path/to/cache.script.sh; done

示例: 运行date命令5次

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

还可以使用下面的语法:

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

不同Shell的for循环语法可能存在小差异。

使用while循环多次执行命令

bash/sh/ksh的while循环语法如下:

END=5

x=$END 
while [ $x -gt 0 ]; 
do 
  date
  x=$(($x-1))
done

z shell使用repeat命令

如果是Z Shell(zsh),可以使用repeate命令重复执行脚本/其他命令

repeat N { command }
repeat N { /path/to/script }
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

显示数字1到5:

$ seq 1 5

或者

$ seq 5

输出示例:

1
2
3
4
5

通过使用xargs命令,执行date命令五次:

$ seq 1 5 | xargs -I{} date

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

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

使用Perl或Python等脚本实现多次执行某个命令

在python或Perl中运行date命令5次:

Perl示例:

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

Python示例:

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