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