.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" 來指出資料來源。
  • 您可以在指令行中明確地列出資料,像下列指令一樣,以迴圈方式執行第一、第二及第三個值:
    .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" 

意見