#!/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
}
上記のコードでは、2つの機能を使用して2つのことを試してください。最初の機能は、任意の人名のリスト(Bob \ n、Jennifer \ n、Caleb \ nなど)を含むテキストファイルをインポートして配置することです。 GUESTS 配列に変換します。コードは訪問者配列になければなりません。次に、2番目の関数は、各名前が1行に含まれている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
2番目の場合は、次のようにする必要があります。
print () {
for index in ${!GUESTS[@]}; do
echo ${GUESTS[$index]}
done
}