.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"