Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[Bash] Lesson 9 – Đọc dữ liệu truyền vào


Đọ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ả

image

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ả

image

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ả

image

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ả:

image

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.

image

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ả:

image