Executando loop com duas variáveis? [duplicado]

1

Como posso executar para loop com two variables ou, em outras palavras, é aceitável fazer isso? Eu esclarecerei minha pergunta pelo seguinte exemplo:

Eu tenho uma lista de letras incluídas em um arquivo de texto "names.txt" e tenho números incluídos no arquivo de texto "numbers.txt", cada número em "numbers.txt" é igual a letra em "names.txt" (linha por linha) Eu quero criar pastas tem os nomes em names.txt + os números em numbers.txt

names.txt       numbers.txt         output_folder name
A               1                   A1
B               2                   B2
C               3                   C3
D               4                   D4
E               5                   E5

para criar pastas tem os nomes incluídos em names.text Eu posso usar o seguinte código:

#!/bin/bash
in=/in/on/an
out=/ss/tt/nn
for i in $(cat $in/names.txt); do
 mkdir ${in}/${i}
done

Como posso adicionar uma segunda variável a um loop for, ou seja, no código anterior, temos a variável i que pertence ao names.txt. Como posso adicionar a variável b pertencente ao numbers.txt?

    
por terdon 11.11.2014 / 03:31

1 resposta

0

Se isso é realmente tudo o que você precisa, basta fazer

mkdir $(paste letters.txt numbers.txt | tr -d '\t')

Isso criará os diretórios para você. Quanto ao caso geral no bash, isso geralmente é feito de maneira semelhante:

paste letters.txt numbers.txt | while read let num; do 
    mkdir "${let}${num}" 
done

Para responder à sua pergunta específica, não é possível executar um loop for com mais de uma variável no bash, mas normalmente há maneiras de contornar isso, como você pode ver. O mais próximo que você pode conseguir é usar matrizes. Por exemplo:

let=( $(cat letters.txt) )
num=( $(cat numbers.txt) )
for((i=0;i<${#let[@]};i++)); do 
    mkdir "${let[$i]}${num[$i]}"
done
    
por 11.11.2014 / 03:41

Tags