我偶尔会像这样运行bash命令行:
n=0; while [[ $n -lt 10 ]]; do some_command; n=$((n+1)); done
在一行中运行some_command多次——在本例中为10次。
通常some_command实际上是一个命令链或管道。
有没有更简洁的方法呢?
我偶尔会像这样运行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是命令将被重复执行的次数。
其他回答
如果可以定期执行,可以运行以下命令以每1秒无限期地运行一次。您可以放置其他自定义检查,以运行n次。
看-n 1 some_command
如果您希望可视化地确认更改,可以在ls命令之前添加——differences。
根据OSX手册页,还有
-cumulative选项使高亮显示“粘性”,显示一个 运行显示所有曾经改变的位置。- t 或者——no-title选项关闭显示间隔的标题, 命令,并在顶部显示当前时间,以及 下面是空行。
Linux/Unix手册页可以在这里找到
这有点天真,但这是我通常能立即想到的:
for i in 1 2 3; do
some commands
done
和@joe- kobberg的回答很相似。他的更好,特别是当你需要很多重复的时候,只是更难记住其他语法,因为在过去的几年里,我不经常使用bash。我的意思是至少不是写脚本。
如果你正在使用zsh shell:
repeat 10 { echo 'Hello' }
其中10是命令将被重复执行的次数。
你的例子的另一种形式:
n=0; while (( n++ < 10 )); do some_command; done
首先,你可以把它封装在一个函数中:
function manytimes {
n=0
times=$1
shift
while [[ $n -lt $times ]]; do
$@
n=$((n+1))
done
}
这样称呼它:
$ manytimes 3 echo "test" | tr 'e' 'E'
tEst
tEst
tEst