Linux命令 –重复一个命令n次

评论 0 浏览 0 2019-09-11

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.使用seqxargs

现在让我们使用一个不那么直接的方法,它被证明是相当有效的。

根据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功能。

最后更新2022-11-26
0 个评论
标签