.drill

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

O comando .drill permite dar um loop em um comando, executando o comando uma vez para cada membro de uma série de valores. É possível especificar os valores na linha de comandos ou extraí-los de uma variável de ambiente ou registro. Quando o sistema executa um comando .drill, o sistema usa a sintaxe .drill para construir uma série de linhas de comando e as envia ao agente para execução.

Por exemplo, o comando .drill "A,B,C,D" "echo value $1" cria os seguintes comandos:
echo value A 
echo value B 
echo value C 
echo value D

Agrupamento

É possível agrupar os valores e se referir a diversos valores em cada grupo usando a sintaxe $n. $1 se refere ao primeiro valor no grupo, $2 ao segundo valor no grupo e assim por diante. Por exemplo, .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]" cria esses comandos:
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]
Nota: Não há um agrupamento de caracteres padrão. Há um caractere separador padrão, a vírgula. Se não for especificado grouped by, o sistema percorre os valores fornecidos como separados pelo caractere separador e considera cada cadeia como um valor único. Por exemplo, o comando .drill "(A,B),(C,D)" "echo $1 $2" determina os seguintes comandos:
echo (A 2 
echo B) 2
echo (C 2
echo D) 2

Origens de Dados

Há várias opções de onde o comando .drill obtém os dados com os quais ele realiza os loops. O primeiro parâmetro do comando é a origem de dados. É possível incluir a palavra de comando opcional "through" para indicar a origem de dados.
  • É possível listar explicitamente os dados na linha de comandos como no comando a seguir, que realiza o loop nos valores one, two e three:
    .drill through "one,two,three" exec "echo $1"
  • É possível extrair os dados de uma variável de ambiente. O comando a seguir assume que a variável de ambiente FILENAMES é uma lista separada por vírgula dos arquivos e usa um comando DOS para excluir todos os arquivos da lista:
    .drill through $FILENAMES exec "del $1"
  • É possível extrair os dados de um registro ou registro de projeto. Se RegisterA contiver uma lista separada por vírgulas dos nomes de arquivo, então o comando seguinte emitido para um sistema Linux gravará o conteúdo de cada arquivo:
    .drill -r RegisterA exec "cat $1"
    enquanto que o exemplo a seguir faz o mesmo, mas utiliza um registro do projeto:
    .drill -rp ProjectRegisterA exec "cat $1" 

Feedback