#!/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
}
В коде, который я предоставил выше, я пытаюсь иметь две функции, первая функция - взять любой текстовый файл со списком случайных имен людей (например, Боб \ n, Дженнифер \ n, Калеб \ n и т. д.) и преобразовать его в массив ГОСТИ. Код ДОЛЖЕН БЫТЬ В СОСТАВЕ ГОСТЕЙ. Затем на втором этапе функция должна распечатать массив ГОСТИ, каждое имя которого имеет свою строку.
Для вашей первой функции Bash упростил вам задачу. Вот все, что вам нужно сделать:
readarray GUESTS < filename.txt
Для второго он должен выглядеть примерно так:
print () {
for index in ${!GUESTS[@]}; do
echo ${GUESTS[$index]}
done
}
Вы можете сделать это, используя встроенный в bash mapfile
:
$ cat /tmp/file.txt
Bob
Jennifer
Caleb
$ mapfile -t guests < /tmp/file.txt
$ printf '%s\n' "${guests[@]}"
Bob
Jennifer
Caleb