Shell 脚本将帮助文本文件写入数组

Shell 脚本将帮助文本文件写入数组
#!/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
}

相关内容