2013-08-31 33 views
5

Tôi đang cố gắng tạo tập lệnh đơn giản hóa quá trình tạo người dùng mới trên thiết bị iOS. Dưới đây là các bước được chia nhỏ.Làm thế nào để đọc đầu vào của người dùng thành một biến trong Bash?

# 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 

Như bạn có thể thấy một số trường yêu cầu đầu vào. Làm thế nào tôi có thể yêu cầu đầu vào cho một biến trong kịch bản?

Trả lời

16

Sử dụng read -p:

# fullname="USER INPUT" 
read -p "Enter fullname: " fullname 
# user="USER INPUT" 
read -p "Enter user: " user 

Nếu bạn muốn xác nhận:

read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1 

Bạn cũng nên trích dẫn các biến của bạn để ngăn chặn sự bành trướng tên đường dẫn và tách chữ với không gian:

# passwd "$user" 
# mkdir "$home" 
# chown "$user:$group" "$home" 
+0

Bạn có thể sử dụng '' $ {confirm ^^} == 'YES'''. –

+0

@ Aleks-DanielJakimenko Đó là một phương pháp thông thường mà người khác sử dụng nhưng nó chỉ tương thích với 4.0+. – konsolebox

0

Ngoài ra, bạn có thể thử zenity!

user=$(zenity --entry --text 'Please enter the username:') || exit 1 
Các vấn đề liên quan