Analisa dois arquivos de entrada para loop / while

1

Eu tenho dois arquivos com dois valores diferentes. Eu quero executar um comando em loop que precisa de entrada de ambos os arquivos. Deixe-me dar o exemplo para simplificar.

Conteúdo do arquivo1:

google  
yahoo

Conteúdo do arquivo2:

mail  
messenger

Eu preciso de um resultado como o abaixo

google is good in mail  
yahoo is good in messenger

Como posso usar um loop for / while para conseguir o mesmo?

Eu preciso de um script para:

$ File1 precisa substituir o primeiro resultado em File1 e $ File2 precisa substituir o primeiro resultado em File2

/ usr / local / psa / bin / domain --criar domínio $ File1 -mail_service true -service-plan 'Domínio padrão' -ip 1.2.3.4 -login $ File2 -passwd "abcghth"

    
por Artist In 08.11.2014 / 13:16

2 respostas

7

O procedimento padrão (no Bash) é ler os diferentes descritores de arquivo com a opção -u de read :

while IFS= read -r -u3 l1 && IFS= read -r -u4 l2; do
    printf '%s is good in %s\n' "$l1" "$l2"
done 3<file1 4<file2
    
por 08.11.2014 / 13:20
3

While loop é possível, mas há uma maneira fácil

paste File{1,2} -d% | sed 's/%/ is good in /'

- % pode ser qualquer símbolo

Mas se você insistir em loop, você pode usar os oferecidos por gniourf_gniourf ou simplesmente estourar sublinhado

mapfile -t A < File1
mapfile -t B < File2

if [ ${#A[*]} -lt ${#B[*]} ]
then
  L=${#A[*]}
else
  L=${#B[*]}
fi

n=-1
while [ $[++n] -lt $L ]
do
  printf "%s is good in %s\n" "${A[$n]}" "${B[$n]}"
done
    
por 08.11.2014 / 13:27

Tags