Đọc đầu vào từ người dùng Trong chủ đề này, chúng ta sẽ tìm hiểu cách đọc đầu vào từ người dùng từ cửa sổ terminal và script Bash.
Để đọc đầu vào người dùng trong Bash, chúng ta sử dụng lệnh tích hợp sẵn của Bash được gọi là read. Nó lấy đầu vào từ người dùng và gán cho biến. Nó chỉ đọc một dòng duy nhất từ shell Bash. Dưới đây là cú pháp để thực hiện điều này.
Cú pháp
read <variable_name>
Ví dụ 1:
#!/bin/bash
# Read the user input
echo "Enter the user name: "
read first_name
echo "The Current User Name is $first_name"
echo
echo "Enter other users'names: "
read name1 name2 name3
echo "$name1, $name2, $name3 are the other users."
Kết quả
Nếu chúng ta không truyền bất kỳ biến nào với lệnh read, thì chúng ta có thể truyền một biến tích hợp sẵn được gọi là REPLY (phải có tiền tố dấu $) khi hiển thị đầu vào. Điều này có thể được giải thích bằng chương trình sau:
#!/bin/bash
# using read command without any variable
echo "Enter name : "
read
echo "Name : $REPLY"
Kết quả
Ví dụ 2:
Trong ví dụ này, chúng ta nhập đầu vào trên cùng một PROMPT bằng cách sử dụng tùy chọn dòng lệnh -p như sau:
Cú pháp:
read -p PROMPT <variable_name>
Ví dụ code:
#!/bin/bash
read -p "username:" user_var
echo "The username is: " $user_var
Kết quả
Ví dụ 3:
Ví dụ này để giữ cho đầu vào ở chế độ im lặng, có nghĩa là bất kỳ đầu vào của người dùng trên dòng lệnh sẽ bị ẩn khỏi người khác.
Do đó, chúng ta truyền vào một tên người dùng và ẩn mật khẩu (chế độ im lặng) bằng cách sử dụng các tùy chọn dòng lệnh (-s, -p) như sau:
Cú pháp:
read -sp PROMPT <variable_name>
Ở đây, tùy chọn -s cho phép người dùng giữ đầu vào ở chế độ im lặng và -p để nhập vào dấu nhắc lệnh mới.
Ví dụ code:
#!/bin/bash
read -p "username : " user_var
read -sp "password : " pass_var
echo
echo "username : " $user_var
echo "password : " $pass_var
Kết quả:
Chú ý: Ở dòng thứ 5 của kịch bản, chúng ta đã tạo một dòng trống với lệnh echo, vì nếu không tạo dòng trống, nó sẽ đưa ra đầu ra với cả mật khẩu và tên người dùng trên cùng một PROMPT như hình ảnh dưới đây.
Vì vậy, hãy viết kịch bản của bạn bằng cách thêm một dòng lệnh echo trống.
Ví dụ 4:
Ví dụ này để nhập nhiều input bằng một mảng. Sử dụng tùy chọn dòng lệnh -a như sau:
read -a <variable_name>
Trong đoạn văn này, “-a” được sử dụng để giúp cho script đọc một mảng, và “variable_name” tham chiếu đến một mảng.
Ví dụ code:
#!/bin/bash
# Reading multiple inputs using an array
echo "Enter names : "
read -a names
echo "The entered names are : ${names[0]}, ${names[1]}."
Kết quả: