Você precisa usar um loop aninhado
for i in 'cat days'
do
for j in 'cat hours'
do
cat file | grep "$i $j" >data-${i}-${j}
done
done
Por favor me ajude a usar 2 variáveis com condição. Por exemplo,
cat days
01072017
02072017
03072017
cat hours
00:00
01:00
02:00
03:00
meu exemplo de script de shell
for i in 'cat days' & j in 'cat hours'
do
cat file | grep $i $j >data-$i-$j
done
Eu quero uma saída de 3 dias * 4 horas = 12 arquivos redirecionados com data-dia-hora correspondente por favor ajude.
A solução padrão para tal problema é fazer dois loops:
for i in $(<days); do
for j in $(<hours); do
grep "$i $j" file > data-"$i-$j"
done
done
Observe que eu mudei os backticks para $()
para substituição de comandos, eliminei gatos mortos e adicionei aspas duplas.
Você pode usar este comando one-liner para executar multiloop, por exemplo, você tem que reiniciar o serviço em diferentes hosts com diferentes parâmetros de serviço "i" é para identificação de host e "j" é para o parâmetro de nome de serviço
for i in 1 2 3 4;do ssh host$i 'for j in A B C D; do sudo systemctl restart service_$j; done'; done
Observação: você deve alterar os valores de "i" e "j" para seus requisitos
Tags bash shell-script variable