Недавно столкнулся с данной проблемой. Есть файл, в нем построчно написаны имена узлов. Необходимо прочитать этот файл таким образом, чтобы иметь доступ к этому набору данных по индексу.
Самое распространенное решение, которое выдает гугл:
i=0; n=0
cat file.txt |
{
while read s
do
let "n++"; let "i++"
var[$i]="$s"
done
}
Но, у меня, криворукого, массив не был виден за пределами фигурных скобок. Однако, спустя некоторое время, было найдено более красивое решение - встроенная в bash функция mapfile, которая полностью выполняет поставленную задачу.
Использование:
mapfile -t hosts < ./hostfile
Самое распространенное решение, которое выдает гугл:
i=0; n=0
cat file.txt |
{
while read s
do
let "n++"; let "i++"
var[$i]="$s"
done
}
Но, у меня, криворукого, массив не был виден за пределами фигурных скобок. Однако, спустя некоторое время, было найдено более красивое решение - встроенная в bash функция mapfile, которая полностью выполняет поставленную задачу.
Использование:
mapfile -t hosts < ./hostfile
В массиве hosts у нас все строчки, которые лежат в hostfile, из которых убраны все лишние знаки табуляции и переноса строк (ключ -t).