If-Else trong Shell Script

Ngày đăng: July 17, 2025

Ubuntu

description image

Điều kiện trong Shell Scripts

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.


If-else trong shell scripts hoạt động như thế nào?

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, elsefi.

  1. Từ khóa if theo sau bởi một condition.
  2. Condition này được đánh giá để quyết định câu lệnh nào sẽ được bộ xử lý thực thi.
  3. Nếu condition đánh giá là TRUE, bộ xử lý sẽ thực thi câu lệnh theo sau từ khóa then (trong cú pháp là statement1).
  4. Nếu condition đánh giá là FALSE, bộ xử lý sẽ thực thi câu lệnh theo sau từ khóa else (trong cú pháp là statement2).

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.


Cách sử dụng if-else trong shell script

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

1. Sử dụng if-else để kiểm tra hai số có bằng nhau 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

2. Sử dụng if-else để so sánh hai giá trị

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'.

3. Sử dụng if-else để kiểm tra số chẵn hay lẻ

Đô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.


4. Sử dụng if-else làm giao diện nhập mật khẩu đơn giản

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

Sử dụng elif cho nhiều điều kiện

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.


Thực hiện quyết định nhị phân bằng if-else

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

Câu lệnh if-else lồng nhau để xử lý tình huống phức tạp

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

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

Tự động xác thực đầu vào người dùng

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âu hỏi thường gặp (FAQs)

  1. Cách sử dụng điều kiện if trong shell script?

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
  1. Làm sao viết câu lệnh if trong shell script?
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
  1. Làm thế nào viết nhiều điều kiện if trong shell script?

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
  1. Làm thế nào xử lý quyết định phức tạp trong shell script?

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
  1. == trong shell script là gì?

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ố.

  1. Thay thế cho if-else trong shell scripting là gì?

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

Kết luận

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.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời