是否存在一个标准的 UNIX 工具可以重复任意次数的命令?

是否存在一个标准的 UNIX 工具可以重复任意次数的命令?

这可能非常简单,但是有没有一种简单的方法可以在控制台中编写一次命令,并在运行时指定执行n次数n?像这样:

repeat 100 echo hello

是否存在这样的命令(假设典型的 Linux 安装)?

或者我应该在 bash 中编写某种循环?

答案1

是的,这是可能的。Bash 具有非常广泛的脚本语言。在这种情况下:

for i in {1..100}; do echo 'hello'; done

更多循环示例:http://www.cyberciti.biz/faq/bash-for-loop/
完整 bash 参考:http://www.gnu.org/software/bash/manual/bashref.html

答案2

for 循环语法很愚蠢。下面这个更简短:

seq 10|xargs -I INDEX echo "print this 10 times"

答案3

或者我应该在 bash 中编写某种循环?

是的,你会喜欢这样的:

for(( i = 0; i < 100; i++ )); do echo "hello"; done

或者更短:

for((i=100;i--;)); do echo "hello"; done

答案4

我没有找到一个“标准”的 Linux 工具来完成这项工作,但我通常会在安装过程中保留我的点文件(.bashrc、.vimrc 等),因此如果从在新安装中保留点文件的角度来看,以下内容非常“标准”:

在 .bashrc 或 .bash_aliases 的末尾放入以下定义:

repeat() {
  n=$1    #gets the number of times the succeeding command needs to be executed
  shift   #now $@ has the command that needs to be executed
  while [ $(( n -= 1 )) -ge 0 ]    #loop n times;
  do
    "$@"    #execute the command; you can also add error handling here or parallelize the commands
  done
}

保存文件并重新打开 shell,或者在现有 shell 中执行source /path/to/.bashrcsource /path/to/.bash_aliases(无论选择修改哪个)。

就是这样!您应该能够按以下方式使用它:

repeat 100 echo hello

repeat 84 ~/scripts/potato.sh

ETC。

相关内容