Làm cách nào để đọc thông tin người dùng nhập vào một biến trong Bash?


83

Tôi đang cố gắng tạo một 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ỏ.

# 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 cách nào để yêu cầu đầu vào cho một biến trong tập lệnh?

Câu trả lời:


171

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 mình để ngăn việc mở rộng tên đường dẫn và tách từ bằng dấu cách:

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

7
Bạn có thể sử dụng ${confirm^^} == 'YES'.
Aleks-Daniel Jakimenko-A.

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

Như một lưu ý phụ: exit 1có nghĩa là thoát ra với lỗi.
Timo



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.