![查看所有 Bash/Shell 脚本相关的常见问题解答](https://www.alaica.com/wp-content/uploads/linux-25.png)
如何在 Linux 或类 UNIX 操作系统下运行“foo”命令 10 次(或 n 次)?
您可以使用bash shell 循环(重复运行代码或命令)来运行命令 10 次,如下所示。
在 bash/ksh/zsh 中运行命令 N 次的方法有很多种。根据您的 shell 使用语法。
句法
语法是:
## 运行命令 10 次 for i in { 1 .. 10 } ; 在此处执行命令名称;完毕 ## 运行脚本 20 次 for i in { 1 .. 10 } ; do / path / to / cache.script.sh; 完毕
例如,运行UNIX date 命令五次,输入:
对于i in { 1 .. 5 };约会 ; 完毕
您还可以像 bash 一样使用 c for 循环语法:
对于 ( ( n = 0 ;n < 5 ;n++ ) ) 做 命令1 命令2 完毕
tcsh / csh / ksh和其他 shell的 for 循环语法可能因版本而异。
使用 while 循环
使用基于 bash/sh/ksh posix 的 while 循环,如下所示:
## 定义结束值 ## END = 5 ## 打印日期五次 ## x = $END while [ $x -gt 0 ] ; 日期 x =$ ( ( $ x - 1 ) )完成
对 zsh 用户重复
如果您使用的是 Z shell (zsh)
重复N { 命令 } 重复N { /路径/到/脚本} ##在屏幕上打印日期五次## 重复5 { 日期 }
向 seq 命令问好
要打印一系列数字,也可以使用 seq 命令。语法是:
要仅打印五个数字,请运行:
OR
示例输出:
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
示例输出:
2017 年 11 月 28 日星期二 00:32:52 国际标准时间 2017 年 11 月 28 日星期二 00:32:52 国际标准时间 2017 年 11 月 28 日星期二 00:32:52 国际标准时间 2017 年 11 月 28 日星期二 00:32:52 国际标准时间 2017 年 11 月 28 日星期二 00:32:52 国际标准时间
您可以将 xargs 与多个命令行参数一起使用,如下所示:
$ seq 1 5 | xargs -I{} sh -c "date && sleep 1"
还可以使用并行命令:
有关详细信息,请参阅以下命令的手册页:
$ 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 ( "日期" ) ; }
Python 示例:
#!/usr/bin/python # 运行 unix date 命令 3 次 import os ; 对于范围( 0 , 3 )内的 x : os . 系统(“日期” )