#!/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
}
위에서 제공한 코드에서 두 가지 기능을 사용하여 두 가지를 시도합니다. 첫 번째 기능은 임의의 사람 이름 목록(예: Bob\n, Jennifer\n, Caleb\n 등)이 포함된 텍스트 파일을 가져와서 넣는 것입니다. GUESTS 배열로 변환합니다. 코드는 방문자 배열에 있어야 합니다. 그런 다음 두 번째 함수는 각 이름이 한 줄에 포함된 GUESTS 배열을 인쇄해야 합니다.
답변1
내장된 bash를 사용하여 이 작업을 수행할 수 있습니다 mapfile
.
$ cat /tmp/file.txt
Bob
Jennifer
Caleb
$ mapfile -t guests < /tmp/file.txt
$ printf '%s\n' "${guests[@]}"
Bob
Jennifer
Caleb
답변2
첫 번째 기능의 경우 Bash는 이미 이를 쉽게 만들어줍니다. 이것이 당신이 해야 할 전부입니다:
readarray GUESTS < filename.txt
두 번째의 경우 다음과 같아야 합니다.
print () {
for index in ${!GUESTS[@]}; do
echo ${GUESTS[$index]}
done
}