我偶尔会像这样运行bash命令行:

n=0; while [[ $n -lt 10 ]]; do some_command; n=$((n+1)); done

在一行中运行some_command多次——在本例中为10次。

通常some_command实际上是一个命令链或管道。

有没有更简洁的方法呢?


当前回答

如果你正在使用zsh shell:

repeat 10 { echo 'Hello' }

其中10是命令将被重复执行的次数。

其他回答

如果你的范围有一个变量,使用seq,像这样:

count=10
for i in $(seq $count); do
    command
done

简单:

for run in {1..10}; do
  command
done

或者作为一行程序,供那些想要轻松复制和粘贴的人使用:

for run in {1..10}; do command; done

使用常量:

for ((n=0;n<10;n++)); do
    some_command; 
done

使用变量(可以包括数学表达式):

x=10; for ((n=0; n < (x / 2); n++)); do some_command; done

如果你正在使用zsh shell:

repeat 10 { echo 'Hello' }

其中10是命令将被重复执行的次数。

你的例子的另一种形式:

n=0; while (( n++ < 10 )); do some_command; done

脚本文件

bash-3.2$ cat test.sh 
#!/bin/bash

echo "The argument is  arg: $1"

for ((n=0;n<$1;n++));
do
  echo "Hi"
done

下面是输出

bash-3.2$  ./test.sh 3
The argument is  arg: 3
Hi
Hi
Hi
bash-3.2$