.drill

.drill [through] 
       <"var1,var2,var3"|$EnvVar|-r[p] Register> 
       [gr[ouped by] "{}"] 
       [sep[arated by] ","] 
       [exec] "Command $1 $2"

drill 命令用于通过一个命令进行循环,从而对一系列值的每个成员执行一次此命令。可以在命令行上指定这些值,或者从环境变量或寄存器进行绘制。系统运行 .drill 命令时,系统将使用 .drill 语法来构造一系列命令行,并将这些命令行发送到代理程序来执行。

例如,命令 .drill "A,B,C,D" "echo value $1" 将创建下列命令:
echo value A 
echo value B 
echo value C 
echo value D

分组

可以对这些值进行分组,并使用 $n 语法引用各组中的多个值。 $1 引用组中的第一个值,$2 引用组中的第二个值,依此类推。例如,.drill through "(A,B,C,D,E),(B,C,D,E,F),(C,D,E,F,G)" grouped by "()" separated by "," exec "echo 1[$1] 2[$2] 3[$3] 4[$4] 5[$5]" 将创建下列命令:
echo 1[A] 2[B] 3[C] 4[D] 5[E] 
echo 1[B] 2[C] 3[D] 4[E] 5[F] 
echo 1[C] 2[D] 3[E] 4[F] 5[G]
注: 没有缺省的分组字符。但是存在缺省的分隔符字符,即逗号。如果不指定 grouped by,系统将查找提供的以分隔符字符分隔的值,并将每个此类字符串视为一个值。例如,命令 .drill "(A,B),(C,D)" "echo $1 $2" 将解析为下列命令:
echo (A 2 
echo B) 2
echo (C 2
echo D) 2

数据源

对于 .drill 命令从何处获取它循环的数据,您有几个选择。此命令的第一个参数是数据源。可以加入可选的命令字“through”来指示数据源。
  • 可以在命令行中明确列出数据,在下面的命令中,将通过值 one、two 和 three 循环:
    .drill through "one,two,three" exec "echo $1"
  • 可以从环境变量绘制数据。下面的命令假定环境变量 FILENAMES 是以逗号分隔的文件列表,并且使用 DOS 命令删除该列表中的所有文件:
    .drill through $FILENAMES exec "del $1"
  • 可以从寄存器或项目寄存器绘制数据。如果 RegisterA 包含以逗号分隔的文件名列表,那么下面这个发出到 Linux 系统的命令将写出各文件的内容:
    .drill -r RegisterA exec "cat $1"
    而下面的示例执行的操作相同,但使用的却是项目寄存器:
    .drill -rp ProjectRegisterA exec "cat $1" 

反馈