Я новичок в сценариях оболочки. Я пытаюсь создать массив размером n
, где n
вводится пользователем в течение времени выполнения.Заполнение динамического массива с использованием пользовательского ввода в сценариях оболочки
while [ $i -lt $n ]
do
echo For person $i enter the name?
read io
eval Name[$index]= $io
done
Когда я пытаюсь это сделать, значения перезаписываются каждый раз, когда петля получает вход от пользователя.
Для примера: если человек 1 - Том, если человек 2 - Джон. Затем, когда я пытаюсь напечатать имена всех людей в конце скрипта, имя человека 1 будет перезаписано человеком n th name (что означает, что все имена хранятся в одной переменной вместо массива).
Может кто-нибудь сказать мне, где я иду не так?
Вы можете избавиться от '$ index' и' eval'. Просто замените 'eval Name [$ index] = $ io'' Name = ("$ {Name [@]}" "$ io") '. – alvits