Итак, как уже упоминалось, два файла. Один содержит userlist
, а другой - ваш скрипт menu.sh
userlist:
user1
user2
Guser3
user4
Возьмите данные из списка пользователей и инициализируйте переменную count i
. Я обернул это в функцию: get_users
get_users() {
i=0
while read -r user
do
options[$i]="$user"
((i++))
done < userlist
options[$i]="add user"
}
Добавьте get_users
к вашей функции МЕНЮ. Это будет читать список пользователей каждый раз, когда вызывается меню.
function MENU {
get_users
echo "Menu Options"
for NUM in ${!options[@]}; do
echo "[""${choices[NUM]:- }""]" $(( NUM+1 ))") ${options[NUM]}"
done
echo "$ERROR"
}
Наконец, убедитесь, что вы добавляете новых пользователей в файл userlist
:
echo "$sname" >> userlist
Обратите внимание:
Вам потребуется добавить более систематический способ повторения вашего выбора в вашей функции ACTIONS
. Поскольку вы явно указали, каким должен быть выбор, вариант 4 всегда будет возвращать нового пользователя, например.
Вы можете сделать это с чем-то вроде:
function ACTIONS {
for (( c=0; c<=$(expr ${#options[@]} - 1); c++ ))
do
if [[ ${choices[$c]} ]]; then
#Option 1 selected
echo "user$(expr $c + 1) selected"
fi
done
if [[ ${choices[$i]} ]]; then # $i is from the new get_users function - convenient way to get the last number from the array
#Option 5 selected
echo "new user added"
read -p "Enter username name: " sname
read -p "Enter comand to save for this user: " cname
echo Adding $sname to list with $cname comand
echo "$sname" >> userlist
fi
}