#!/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
}