Текстовый файл справки по сценариям оболочки в массив

#!/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 и т. д.) и преобразовать его в массив ГОСТИ. Код ДОЛЖЕН БЫТЬ В СОСТАВЕ ​​ГОСТЕЙ. Затем на втором этапе функция должна распечатать массив ГОСТИ, каждое имя которого имеет свою строку.

0
07.03.2017, 22:42
2 ответа

Для вашей первой функции Bash упростил вам задачу. Вот все, что вам нужно сделать:

readarray GUESTS < filename.txt

Для второго он должен выглядеть примерно так:

print () {
   for index in ${!GUESTS[@]}; do
   echo ${GUESTS[$index]}
   done
}
0
28.01.2020, 02:34

Вы можете сделать это, используя встроенный в bash mapfile:

$ cat /tmp/file.txt 
Bob
Jennifer
Caleb
$ mapfile -t guests < /tmp/file.txt
$ printf '%s\n' "${guests[@]}"
Bob
Jennifer
Caleb
2
28.01.2020, 02:34

Теги

Похожие вопросы