Как читать ввод пользователя в переменную в Bash?
Я пытаюсь создать сценарий, который упрощает процесс создания нового пользователя на устройстве iOS. Вот шаги разбиты.
# fullname="USER INPUT"
# user="USER INPUT"
# group=$user
# uid=1000
# gid=1000
# home=/var/$user
# echo "$group:*:$gid:$user" >> /private/etc/group
# echo "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
# passwd $user
# mkdir $home
# chown $user:$group $home
Как видите, некоторые поля требуют ввода. Как я могу запросить ввод для переменной в скрипте?
Ответы
Ответ 1
Используйте read -p
:
# fullname="USER INPUT"
read -p "Enter fullname: " fullname
# user="USER INPUT"
read -p "Enter user: " user
Если вы хотите подтвердить:
read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1
Вы также должны указать свои переменные, чтобы предотвратить расширение имени пути и разбиение слов с помощью пробелов:
# passwd "$user"
# mkdir "$home"
# chown "$user:$group" "$home"
Ответ 2
Да, вы хотите сделать что-то вроде этого:
echo -n "Enter Fullname: "
read fullname
Другой вариант - предоставить им эту информацию в командной строке. Getopts - ваш лучший выбор.
Использование getopts в сценарии оболочки bash для получения длинных и коротких параметров командной строки
Ответ 3
Также вы можете попробовать зенит !
user=$(zenity --entry --text 'Please enter the username:') || exit 1