Arquivo de texto de ajuda do shell script no array

0
#!/bin/bash
function guest {
i=0
while IFS = $'\n' read -r name; do
GUESTS[i]="${name}"
((i++))
done<filename.txt
}
function print{
i=0
while ((${GUESTS[@]} > $i)) do
echo "${GUESTS[i++]}\n" 
done
}

No código que eu forneci acima, eu estou tentando fazer duas funções, a primeira função é pegar qualquer arquivo de texto com uma lista de nomes aleatórios de pessoas (ex. Bob \ n, Jennifer \ n, Caleb \ n, etc) e convertê-lo em uma matriz de PESSOAS. O código DEVE ESTAR no ARRAY OF GUESTS. Então, na segunda função, deve-se imprimir o conjunto de PESSOAS, com cada nome tendo sua própria linha.

    
por James Issac Newtron 07.03.2017 / 20:33

2 respostas

2

Você pode fazer isso usando o bash mapfile :

$ cat /tmp/file.txt 
Bob
Jennifer
Caleb
$ mapfile -t guests < /tmp/file.txt
$ printf '%s\n' "${guests[@]}"
Bob
Jennifer
Caleb
    
por 07.03.2017 / 20:47
0

Para a sua primeira função, o Bash tornou isso mais fácil para você. Aqui está tudo o que você precisa fazer:

readarray GUESTS < filename.txt

Para o segundo, deve ser algo como isto:

print () {
   for index in ${!GUESTS[@]}; do
   echo ${GUESTS[$index]}
   done
}
    
por 07.03.2017 / 21:18