Linux命令 –重复一个命令n次
1.绪论
在使用Linux脚本工作时,重复命令是最常用的操作之一。
在这个快速教程中,我们将介绍如何使用不同的方法来执行一个操作n次。
2.使用for循环
让我们从定义一个任务开始,我们将在整个例子中使用这个任务。为了简单起见,我们将向控制台打印单词“Command”五次。我们还将尽可能包括一个迭代号。
让我们直接跳入其中,并从良好的老式“for-loop”开始。
for i in {1..5}
do
echo "Command no. $i"
done
上述例子的结果是:输出。
Command no. 1
Command no. 2
Command no. 3
Command no. 4
Command no. 5
我们还可以将这些操作浓缩到一个单行的解决方案中。
for i in {1..5}; do echo "Command no. $i"; done
对于我们需要基于条件的表达式的场景,我们也可以使用更多的编程风格的方法。
for ((i=0;i<5;i++)); do echo "Command no. $i"; done
3.使用while循环
为了实现一个可重复的命令,我们也可以使用“while-loop”。
i=1
while [[ $i -le 5 ]]; do
echo "Command no. $i"
let ++i;
done
和前面的例子一样,我们可以只用一行来实现这个循环。
i=1; while [[ $i -le 5 ]]; do echo "Command no. $i"; let ++i; done
4.使用seq与xargs。
现在让我们使用一个不那么直接的方法,它被证明是相当有效的。
根据Linux文档,seq打印数字序列,xargs构建一个参数列表,并在每个参数上执行指定的命令。
考虑到这一点,我们可以通过管道将这两个操作创建一个可重复的命令。
seq 5 | xargs -I{} echo "Command no. {}"
在上面的例子中,我们使用了-I标志与占位符字符串“{}”。然后,定义的命令中的占位符被替换成一个有顺序的数字,结果是我们在上面看到的同样的输出。
5.Bash函数
到目前为止,所描述的每一个解决方案都需要一定量的模板代码。
如果我们想经常使用可重复的命令,我们可以把我们的一个例子改写成一个bash函数。
function repeat(){
for ((i=0;i<$1;i++)); do
eval ${*:2}
done
}
现在我们可以在shell中使用我们的函数了。
repeat 5 echo "Command"
在上面的例子中,我们使用了eval,以便能够使用非可执行的命令,如变量赋值。
我们还引入了${*:2},它评估为一个包含所有命令输入变量的数组,从索引2开始。
由于我们的实现接受多个参数,我们也可以将多个命令传递给我们的repeat函数。
repeat 5 echo "Command" ";" echo "Another command"
ZSH
前面描述的例子对每个bash shell都是有效的,但也有其他的解决方案,如ZSH。
这个shell有一个简单的内置功能,可以重复一个命令n次。
repeat 5 echo "Command"
而对于多个指令来说。
repeat 5 {echo "Command1"; echo "Command2"}
7.结语
在这篇文章中,我们探讨了多次重复一个Linux命令的几种方法。
我们看了使用vanilla bash脚本的例子,并展示了自定义shell ZSH的预定义的repeat功能。