Một trong những phần quan trọng nhất của lập trình có điều kiện là câu lệnh if-else. Câu lệnh if-else cho phép bạn thực thi các câu lệnh có điều kiện lặp đi lặp lại trong mã của bạn.
Chúng ta sử dụng if-else trong shell script khi muốn đánh giá một điều kiện, sau đó quyết định thực thi một trong hai hoặc nhiều tập câu lệnh dựa trên kết quả.
Điều này cho phép chúng ta chọn phản hồi dựa trên kết quả mà biểu thức điều kiện đánh giá được.
Bây giờ chúng ta đã biết if-else là gì và tại sao nó quan trọng với mọi lập trình viên, bất kể lĩnh vực nào. Để hiểu if-else trong shell scripts, chúng ta cần phân tích cách hoạt động của hàm điều kiện.
Cùng xem cú pháp của khối điều kiện if-else.
if [ condition ]
then
statement1
else
statement2
fi
Ở đây chúng ta có bốn từ khóa, cụ thể là if, then, else và fi.
Một điều quan trọng cần lưu ý là, giống như lập trình C, shell scripting phân biệt chữ hoa chữ thường. Vì thế bạn cần cẩn thận khi dùng từ khóa trong code.
Giải pháp tốt nhất để hiểu một hàm là thông qua ví dụ, vì chúng giúp bạn hiểu vai trò của các thành phần khác nhau trong hàm.
Dưới đây là một số ví dụ hữu ích về if-else trong shell script để bạn hiểu cách sử dụng công cụ này.
Ví dụ | Mô tả |
---|---|
if [ $a -eq $b ]; then echo "Both variables are the same"; else echo "Both variables are different"; fi |
Kiểm tra hai biến có bằng nhau không |
if [ $a -ge $b ]; then echo "The variable 'a' is greater than the variable 'b'."; else echo "The variable 'b' is greater than the variable 'a'."; fi |
So sánh hai giá trị để tìm giá trị lớn hơn |
if [ $((a % 2)) -eq 0 ]; then echo "The number is even"; else echo "The number is odd"; fi |
Kiểm tra số chẵn hay lẻ |
if [ -f file.txt ]; then echo "File exists"; else echo "File does not exist"; fi |
Kiểm tra file tồn tại |
if [ -z "$var" ]; then echo "Variable is empty"; else echo "Variable is not empty"; fi |
Kiểm tra biến có rỗng hay không |
Khi bắt đầu hiểu if-else trong shell script, hãy bắt đầu với ví dụ đơn giản. Ở đây, chúng ta khởi tạo hai biến a và b, dùng if-else để kiểm tra hai biến có bằng nhau không. Bash script như sau:
#!/bin/bash
m=1
n=2
if [ $n -eq $m ]
then
echo "Both variables are the same"
else
echo "Both variables are different"
fi
Output:
Both variables are different
Cách sử dụng phổ biến của if-else trong shell script là để so sánh hai giá trị. So sánh biến với biến khác hoặc giá trị cố định được sử dụng trong nhiều trường hợp.
Ví dụ, khởi tạo hai biến và dùng if-else để xác định biến nào lớn hơn.
#!/bin/bash
a=2
b=7
if [ $a -ge $b ]
then
echo "The variable 'a' is greater than the variable 'b'."
else
echo "The variable 'b' is greater than the variable 'a'."
fi
Output:
The variable 'b' is greater than the variable 'a'.
Đôi khi ta cần phân biệt số chẵn và số lẻ. Dùng if-else kèm toán tử modulus để kiểm tra.
Toán tử modulus chia số cho một số chia và trả về phần dư.
Vì số chẵn là bội số của 2, ta dùng script sau:
#!/bin/bash
n=10
if [ $((n % 2)) == 0 ]
then
echo "The number is even."
else
echo "The number is odd."
fi
Output:
The number is even
Lưu ý phần điều kiện dùng dấu ngoặc kép để thực hiện phép toán modulus trước khi kiểm tra.
Ngoài ra, dấu ngoặc kép cho phép chạy các câu lệnh kiểu C trong bash scripts.
If-else rất đa dụng. Ví dụ dùng if-else làm giao diện nhập mật khẩu.
Yêu cầu người dùng nhập mật khẩu, lưu trong biến pass.
Nếu mật khẩu đúng (ví dụ là 'password'), in ra "The password is correct".
Ngược lại, in ra "The password is incorrect, try again."
#!/bin/bash
echo "Enter password"
read pass
if [ $pass="password" ]
then
echo "The password is correct."
else
echo "The password is incorrect, try again."
fi
Khi cần kiểm tra nhiều điều kiện theo thứ tự, dùng các câu lệnh if-else lồng nhau rất phức tạp. Trong trường hợp này, câu lệnh elif (else if) rất hữu ích. Câu lệnh này giúp kiểm tra nhiều điều kiện theo cách có cấu trúc và dễ đọc hơn.
Cú pháp sử dụng elif trong shell script:
#!/bin/bash
grade=85
if [ $grade -ge 90 ]; then
echo "Grade: A"
elif [ $grade -ge 80 ]; then
echo "Grade: B"
elif [ $grade -ge 70 ]; then
echo "Grade: C"
else
echo "Grade: F"
fi
Ví dụ này kiểm tra điểm và in ra chữ cái tương ứng.
Quyết định nhị phân là khía cạnh cơ bản trong lập trình, và câu lệnh if-else là cách phổ biến nhất để thực hiện chúng trong shell scripts.
Quyết định nhị phân là lựa chọn giữa hai tùy chọn như true/false, yes/no, hoặc 0/1.
Ví dụ script kiểm tra file tồn tại:
#!/bin/bash
file_path="/path/to/your/file.txt"
if [ -f "$file_path" ]; then
echo "The file exists."
else
echo "The file does not exist."
fi
If-else lồng nhau giúp xử lý các tình huống phức tạp cần đánh giá nhiều điều kiện.
Ví dụ kiểm tra một số nằm trong phạm vi:
#!/bin/bash
num=10
if [ $num -ge 5 ]; then
if [ $num -le 15 ]; then
echo "The number is within the range."
else
echo "The number is above the range."
fi
else
echo "The number is below the range."
fi
Kiểm tra sự tồn tại và quyền truy cập file là công việc phổ biến trong shell script.
Ví dụ script kiểm tra file tồn tại và có quyền đọc:
#!/bin/bash
file_path="/path/to/your/file.txt"
if [ -f "$file_path" ]; then
if [ -r "$file_path" ]; then
echo "The file exists and is readable."
else
echo "The file exists but is not readable."
fi
else
echo "The file does not exist."
fi
Xác thực đầu vào người dùng giúp đảm bảo dữ liệu nhập hợp lệ và xử lý đúng.
Ví dụ script xác thực hai số nhập vào:
#!/bin/bash
echo "Enter the first number:"
read num1
echo "Enter the second number:"
read num2
if [[ $num1 =~ ^[0-9]+$ ]] && [[ $num2 =~ ^[0-9]+$ ]]; then
echo "Both numbers are valid."
# Perform calculations here
else
echo "One or both numbers are invalid. Please enter valid numbers."
fi
Cú pháp chuẩn:
if [ condition ]; then
# code khi điều kiện true
fi
Ví dụ kiểm tra file tồn tại:
if [ -f file.txt ]; then
echo "File exists."
fi
if [ condition ]; then
# code nếu true
else
# code nếu false
fi
Ví dụ kiểm tra biến lớn hơn 10:
if [ $var -gt 10 ]; then
echo "Variable is greater than 10."
else
echo "Variable is not greater than 10."
fi
Dùng elif:
if [ condition1 ]; then
# code nếu condition1 đúng
elif [ condition2 ]; then
# code nếu condition1 sai, condition2 đúng
else
# code nếu hết
fi
Ví dụ kiểm tra biến trong khoảng:
if [ $var -ge 5 ] && [ $var -le 15 ]; then
echo "Variable is within the range."
elif [ $var -lt 5 ]; then
echo "Variable is less than 5."
else
echo "Variable is greater than 15."
fi
Dùng if lồng nhau, case, hoặc toán tử logic.
Ví dụ dùng toán tử logic:
if [ $var -ge 5 ] && [ $var -le 15 ]; then
echo "Variable is within the range."
elif [ $var -lt 5 ] || [ $var -gt 15 ]; then
echo "Variable is outside the range."
fi
Dùng để so sánh chuỗi. Ví dụ:
if [ "$var" == "value" ]; then
echo "Variable is equal to 'value'."
fi
Không dùng để so sánh số học. Dùng -eq, -ne, -gt, -lt, -ge, -le cho số.
Dùng câu lệnh case để so khớp nhiều kiểu và thực hiện các khối lệnh khác nhau.
Ví dụ:
case $var in
1)
echo "Variable is 1."
;;
2)
echo "Variable is 2."
;;
*)
echo "Variable is neither 1 nor 2."
;;
esac
Hàm if-else trong shell script là một công cụ quan trọng cho lập trình viên shell. Đây là công cụ tốt nhất để thực thi tập lệnh dựa trên các điều kiện đã định sẵn.
Khối if-else là phần không thể thiếu trong lập trình có điều kiện. Bằng cách điều chỉnh thực thi các câu lệnh cụ thể, bạn không chỉ làm cho mã hiệu quả hơn mà còn tránh lãng phí thời gian xử lý những câu lệnh không cần thiết.