NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
31/10/2024
Lượt xem

Câu lệnh Else-If trong Bash là gì? 6 ví dụ về cách sử dụng câu lệnh Else-If

31/10/2024
19 phút đọc
Lượt xem

Đánh giá

Câu lệnh else-if trong Bash giúp đưa ra quyết định trong lập trình dựa trên điều kiện một cách hiệu quả. Khác với câu lệnh if-else chỉ xử lý một điều kiện, else-if cho phép kiểm tra nhiều điều kiện cùng lúc trong một vòng lặp. Nếu bạn vẫn còn mơ hồ về cách áp dụng của lệnh này, hãy cùng mình tìm hiểu rõ hơn qua các ví dụ minh họa dưới đây.

Những điểm chính cần nắm

Để giúp bạn hiểu rõ hơn về lệnh else-if trong Bash và cách sử dụng lệnh. Dưới đây mình sẽ tóm tắt lại những nội dung chính bạn sẽ nắm được:

  • Lệnh Else-If trong Bash là gì: Bạn sẽ được giải thích chi tiết về định của lệnh else-if để bạn dễ dàng ghi nhớ định nghĩa lệnh else-if lâu dài.
  • Cú pháp lệnh else-if: Được cung cấp cú pháp cơ bản của câu lệnh else-if và giải thích ý nghĩa các lệnh trong cú pháp cũng như cách thức hoạt động để bạn có thể nắm bắt và thực hiện theo một cách dễ dàng.
  • 6 ví dụ về cách sử dụng lệnh else-if: Để bạn dễ hình dung hơn về cách sử dụng lệnh, mình sẽ cung cấp 6 ví dụ cụ thể về cách sử dụng, có hình ảnh và hướng dẫn chi tiết cho từng ví dụ giúp bạn dễ dàng theo dòi và thực hiện theo.

Lệnh Else-If trong Bash là gì?

Lệnh else-if viết tắt là elif là một phần của cấu trúc điều kiện, cho phép bạn kiểm tra và ra quyết định kiểm soát việc thực thi các block lệnh dựa trên tính đúng (true) hoặc sai (false) của các điều kiện.

Lệnh else-if trong Bash cho phép kiểm tra và quyết định kiểm soát thực thi các block lệnh
Lệnh else-if trong Bash cho phép kiểm tra và quyết định kiểm soát thực thi các block lệnh

Cú pháp lệnh else-if trong Bash

Cú pháp cơ bản của câu lệnh else-if (elif) như sau:

if [ condition1 ]; then
    # Code block executed if condition1 is true
elif [ condition2 ]; then
    # Code block executed if condition2 is true
else
    # Code block executed if none of the conditions are true
fi

Giải thích:

  • condition1, condition2: Các biểu thức điều kiện trả về giá trị đúng hoặc sai.
  • then: Từ khóa bắt buộc sau mỗi điều kiện.
  • elif: Viết tắt của else-if, được sử dụng để kiểm tra điều kiện tiếp theo khi điều kiện trước đó sai.
  • else: block lệnh được thực thi khi tất cả các điều kiện if và elif đều sai.
  • fi: Từ khóa bắt buộc để kết thúc block lệnh if-elif-else.

Cách thức hoạt động như sau:

  • Đầu tiên, câu lệnh if sẽ kiểm tra điều kiện.
  • Nếu condition1 đúng thì script thực thi block lệnh if.
  • Nếu condition1 sai và condition2 đúng, script thực thi block lệnh elif.
  • Nếu cả condition1condition2 đều sai, script thực thi block lệnh else.

Ví dụ 1: Kiểm tra số dương hay số âm

Để kiểm tra xem một số là số dương hay là số âm, bạn có thể sử dụng câu lệnh elif. Trong ví dụ này, mình sẽ sử dụng tùy chọn -gt (greater than) trong block if để kiểm tra xem giá trị input có lớn hơn 0 hay không. Nếu lớn hơn 0 thì đó là số dương và ngược lại, tùy chọn -lt (less than) trong block elif sẽ kiểm tra xem số đó có nhỏ hơn 0 hay không, nếu nhỏ hơn thì đó là số âm. Trong trường hợp cả 2 điều kiện kiểm tra ở if và elif đều không trả về giá trị đúng thì sẽ thực hiện lệnh else trả về kết quả đây là số 0.

Dưới đây là cách thực hiện:

#!/bin/bash
read -p "Enter a number: " num
if [ "$num" -gt 0 ]; then
    echo "The number is positive."
elif [ "$num" -lt 0 ]; then
    echo "The number is negative."
else
    echo "The number is zero."
fi

Giải thích: 

  • #!/bin/bash: Đây là “shebang” nhằm xác định rằng đoạn code bên dứoi sẽ được thực thi bằng trình thông dịch Bash.
  • read -p “Nhập giá trị: ” num: Lệnh read -p cho phép chương trình hiển thị thông báo “Nhập giá trị:” và đợi người dùng nhập vào một số. Giá trị người dùng nhập sẽ được gán vào biến num để sử dụng trong các câu lệnh điều kiện tiếp theo.
  • if [ “$num” -gt 0 ]; then: Câu lệnh if kiểm tra xem giá trị của num có lớn hơn 0 không bằng cách sử dụng -gt (greater than). Nếu đúng, câu lệnh echo sẽ chạy, in ra thông báo “Đây là số dương.” để thông báo rằng số này là một số dương.
  • elif [ “$num” -lt 0 ]; then: Nếu điều kiện trong if không đúng (nghĩa là num không lớn hơn 0), câu lệnh elif sẽ tiếp tục kiểm tra nếu num nhỏ hơn 0 (-lt). Nếu điều kiện này đúng, chương trình sẽ in ra “Đây là số âm.” để xác nhận rằng số nhập vào là số âm.
  • else: Nếu cả hai điều kiện if và elif đều không đúng (nghĩa là num không lớn hơn hoặc nhỏ hơn 0), block else sẽ được thực thi. Khi đó, chương trình sẽ in ra màn hình “Đây là số 0.” để thông báo rằng số đã nhập bằng 0.

Kết quả: Trong hình trên, bạn có thể thấy số 3 là số dương vì lớn hơn 0. Ngược lại, số -9 là số âm vì nhỏ hơn 0.

Kết quả kiểm tra số dương và số âm
Kết quả kiểm tra số dương và số âm

Ví dụ 2: Kiểm tra xem một file là file thông thường hay folder

Để kiểm tra xem một file là file thông thường, folder hay không phải cả hai, bạn có thể sử dụng một đoạn code duy nhất kết hợp câu lệnh elif. Trong ví dụ này, mình sẽ sử dụng tùy chọn -f trong block lệnh if để kiểm tra xem đó có phải là file thông thường hay không và tùy chọn -d trong block lệnh elif để kiểm tra xem file đó có phải là folder hay không.

Bạn có thể tham khảo đoạn script bash sau:

#!/bin/bash
read -p "Enter a filename: " filename
if [ -f "$filename" ]; then
    echo "It's a regular file."
elif [ -d "$filename" ]; then
chch    echo "It's a directory."
else
    echo "It's neither a file nor a directory."
fi

Giải thích:

  • read -p “Enter a filename: ” filename: Lệnh read -p hiển thị thông báo “Enter a filename:” và đợi người dùng nhập vào tên của một file hoặc folder. Giá trị bạn nhập vào sẽ được lưu vào biến filename để sử dụng trong các câu lệnh điều kiện tiếp theo.
  • if [ -f “$filename” ]; then: Câu lệnh if kiểm tra xem file hoặc folder được nhập vào có phải là một file thông thường không, sử dụng tùy chọn -f (file). Nếu đúng, chương trình sẽ in ra “It’s a regular file.”
  • elif [ -d “$filename” ]; then: Nếu điều kiện trong if sai, câu lệnh elif kiểm tra xem $filename có phải là một folder hay không. Nếu đúng, câu lệnh echo sẽ in ra dòng chữ “It’s a directory.”
  • else: Nếu cả hai điều kiện trong if và elif đều sai, câu lệnh else sẽ được thực thi và in ra dòng chữ “It’s neither a file nor a directory.”

Kết quả: Trong hình dưới, bạn có thể thấy kết quả hiển thị là “It’s a directory.” vì “portal mình” là một directory, không phải là một file thông thường. Trong khi đó “program1.c” có đuôi extension ngôn ngữ C sẽ xác định là file và program1 sẽ được hiển thị “It’s neither a file nor a directory” nếu không tồn tại hoặc không xác định.

Kết quả kiểm tra file là file thông thường hay folder
Kết quả kiểm tra file là file thông thường hay folder

Ví dụ 3: Xác minh tên người dùng bằng câu lệnh elif

Để xác minh tên người dùng bằng câu lệnh elif, bạn có thể sử dụng toán tử so sánh bằng == trong block điều kiện. Nếu tên người dùng nhập vào trùng khớp với tên người dùng hợp lệ thì bạn mới được cấp quyền truy cập. Nhờ cấu trúc elif, bạn có thể kiểm tra nhiều tên người dùng cùng lúc, giúp xác minh hiệu quả hơn. Để giúp bạn dễ dàng hình dung cách thức hoạt động, mình sẽ sử dụng một đoạn script bash để kiểm tra 2 tên người dùng khác nhau, bạn theo dõi qua ví dụ bên dưới:

#!/bin/bash
read -p "Enter your username: " username
if [ "$username" == "vietnix" ]; then
    echo "Welcome, vietnix!"
elif [ "$username" == "nam" ]; then
    echo "Welcome, nam!"
else
    echo "Invalid username."
fi

Giải thích:

  • read -p “Enter your username: ” username: Lệnh read -p hiển thị thông báo “Enter your username:” và đợi người dùng nhập vào tên người dùng của họ. Tên người dùng này sẽ được lưu vào biến username.
  • if [ “$username” == “vietnix” ]; then: If sẽ kiểm tra xem giá trị của username có bằng “vietnix” không bằng cách sử dụng toán tử so sánh ==. Nếu đúng, lệnh echo in ra dòng chữ “Welcome, vietnix!”.
  • elif [ “$username” == “nam” ]; then: Nếu điều kiện trong if sai, câu lệnh elif sẽ kiểm tra xem tên người dùng nhập vào có trùng khớp với “nam” hay không. Nếu đúng, lệnh echo in ra dòng chữ “Welcome, nam!”.
  • else: Nếu cả hai điều kiện trong if và elif đều sai, câu lệnh else sẽ thực thi và in ra dòng chữ “Invalid username.”, có nghĩa là “Tên người dùng không hợp lệ.”

Kết quả: Khi bạn nhập tên người dùng “vietnix” hoặc “nam”, chương trình sẽ in ra thông báo chào mừng tương ứng. Nếu bạn nhập tên người dùng khác, ví dụ như mitu, chương trình sẽ in ra thông báo “Invalid username.”

Chương trình sẽ in ra thông báo Invalid username
Chương trình sẽ in ra thông báo Invalid username

Ví dụ 4: Kiểm tra độ dài của chuỗi

Để kiểm tra xem một chuỗi có số lượng ký tự nhất định trong Bash, bạn có thể dùng cú pháp ${#string} trong các câu điều kiện elif. Cú pháp này sẽ trả về số lượng ký tự trong chuỗi, bao gồm cả dấu cách. Bạn có thể theo dõi kỹ hơn thông qua ví dụ này, mình sẽ sử dụng toán tử -eq để kiểm tra xem chuỗi có đúng 3 ký tự, 5 ký tự, hay có số lượng ký tự khác.

Dưới đây là đoạn script bash chi tiết:

#!/bin/bash
read -p "Enter a string: " string
if [ "${#string}" -eq 3 ]; then
    echo "The string has three characters."
elif [ "${#string}" -eq 7 ]; then
    echo "The string has seven characters."
else
    echo "The string has a different number of characters."
fi

Giải thích: 

  • read -p “Enter a string: ” string: Lệnh read -p hiển thị thông báo “Enter a string:” và đợi người dùng nhập vào một chuỗi. Giá trị người dùng nhập sẽ được lưu vào biến string để kiểm tra độ dài.
  • if [ “${#string}” -eq 3 ]; then: Block if sử dụng cú pháp ${#string} để tính độ dài của chuỗi string. Toán tử -eq kiểm tra xem độ dài chuỗi có bằng 3 hay không. Nếu đúng, lệnh echo in ra dòng chữ “The string has three characters.”
  • elif [ “${#string}” -eq 7 ]; then: Nếu điều kiện trong if sai, câu lệnh elif sẽ kiểm tra xem độ dài của chuỗi có bằng 5 hay không. Nếu đúng, câu lệnh echo sẽ in ra dòng chữ “The string has seven characters.”
  • else: Nếu cả hai điều kiện trong if và elif đều sai, câu lệnh else sẽ thực thi và in ra dòng chữ “The string has a different number of characters.”, có nghĩa là “Chuỗi có số lượng ký tự khác.”

Kết quả: Trong hình dưới, bạn có thể thấy khi nhập chuỗi “nam”, script sẽ in ra thông báo chuỗi có 3 ký tự. Nếu bạn nhập chuỗi “hello world!”, script sẽ in ra thông báo chuỗi có một số ký tự khác. Nếu bạn nhập chuỗi “vietnix”, script sẽ in ra thông báo chuỗi có 7 ký tự.

Kết quả script in ra thông báo chuỗi có 7 ký tự
Kết quả script in ra thông báo chuỗi có 7 ký tự

Ví dụ 5: Kiểm tra năm nhuận bằng 3 điều kiện

Bạn có thể sử dụng nhiều hơn 2 điều kiện với cấu trúc elif. Trong ví dụ này, mình sẽ hướng dẫn bạn kiểm tra xem một năm cụ thể có phải là năm nhuận hay không. Về cơ bản, năm nhuận là năm có 366 ngày thay vì 365 ngày như thông thường. Và để xác định một năm là năm nhuận, cần thỏa mãn các điều kiện sau:

  • Năm phải chia hết cho 4.
  • Năm không được chia hết cho 100.
  • Năm đó cũng chia hết cho 400.

Dưới đây là đoạn script bash đầy đủ, mình sẽ sử dụng toán tử modulo (%) để tính phần dư của phép chia.

#!/bin/bash
read -p "Enter a year: " year

if [ "$((year % 400))" -eq 0 ]; then
    echo "$year is a leap year."
elif [ "$((year % 100))" -eq 0 ]; then
    echo "$year is not a leap year."
elif [ "$((year % 4))" -eq 0 ]; then
    echo "$year is a leap year."
else
    echo "$year is not a leap year."
fi

Giải thích:

  • read -p “Enter a year: ” year: Hiển thị dòng chữ “Enter a year: ” và chờ người dùng nhập một năm. Năm này sẽ được lưu vào biến year.
  • if [ “$((year % 400))” -eq 0 ]; then: Kiểm tra xem năm có chia hết cho 400 hay không. Nếu đúng, lệnh echo sẽ in ra dòng chữ “$year is a leap year.”, chứng tỏ năm đó là năm nhuận.
  • elif [ “$((year % 100))” -eq 0 ]; then: Nếu điều kiện trong if sai, câu lệnh elif sẽ kiểm tra xem năm có chia hết cho 100 hay không. Nếu đúng, lệnh echo in ra dòng chữ “$year is not a leap year.”, có nghĩa năm đó không phải là năm nhuận.
  • elif [ “$((year % 4))” -eq 0 ]; then: Nếu điều kiện trong elif trước đó sai, câu lệnh elif kiểm tra xem năm có chia hết cho 4 hay không. Nếu đúng, lệnh echo sẽ in ra dòng chữ “$year is a leap year.”, có nghĩa là năm nhuận
  • else: Nếu cả 3 điều kiện trong if và elif đều sai, lệnh else được thực thi và in ra dòng chữ “$year is not a leap year.”, có nghĩa năm đó không phải là năm nhuận.

Kết quả: Khi bạn nhập năm 2024, script sẽ in ra thông báo 2023 là năm nhuận vì 2024 chia hết cho 400, 100 và 4. Trong khi đó nếu bạn nhập năm 2015, vì giá trị này không chia hết cho 400, 100 và 4 do đó 2015 không phải năm nhuận.

Kết quả kiểm tra năm nhuận
Kết quả kiểm tra năm nhuận

Ví dụ 6: Kiểm tra ngày trong tuần với nhiều điều kiện

Nếu bạn cần thực hiện nhiều điều kiện trong một vòng lặp, bạn có thể sử dụng câu lệnh elif. Dưới đây là ví dụ đơn giản để kiểm tra ngày trong tuần bằng cách sử dụng biểu thức elif. Toán tử -eq được sử dụng để kiểm tra sự bằng nhau giữa các biến.

#!/bin/bash
read -p "Enter a day (1-7): " day
if [ "$day" -eq 1 ]; then
    echo "It's Monday."
elif [ "$day" -eq 2 ]; then
    echo "It's Tuesday."
elif [ "$day" -eq 3 ]; then
    echo "It's Wednesday."
elif [ "$day" -eq 4 ]; then
    echo "It's Thursday."
elif [ "$day" -eq 5 ]; then
    echo "It's Friday."
elif [ "$day" -eq 6 ]; then
    echo "It's Saturday."
elif [ "$day" -eq 7 ]; then
    echo "It's Sunday."
else
    echo "Invalid day."
fi

Giải thích: 

Đoạn mã Bash này cho phép bạn nhập vào một số từ 1 đến 7 đại diện cho các ngày trong tuần và sẽ hiển thị tên ngày tương ứng. Nếu số nhập vào không nằm trong khoảng từ 1 đến 7, chương trình sẽ thông báo rằng đó là “Invalid day.” Dưới đây là giải thích từng câu lệnh:

  • read -p “Enter a day (1-7): ” day: Lệnh read -p hiển thị thông báo “Enter a day (1-7):” và chờ người dùng nhập một số từ 1 đến 7, đại diện cho ngày trong tuần. Số này sẽ được lưu vào biến day.
  • if [ “$day” -eq 1 ]; then: Kiểm tra xem giá trị của biến day có bằng 1 hay không. Nếu đúng, câu lệnh echo sẽ in ra dòng chữ “It’s Monday.”, có nghĩa “Hôm nay là Thứ Hai.”
  • elif [ “$day” -eq 2 ]; then: Nếu điều kiện trong if sai, kiểm tra xem giá trị của biến day có bằng 2 hay không. Nếu đúng, lệnh echo sẽ in ra dòng chữ “It’s Tuesday.”. có nghĩa “Hôm nay là Thứ Ba.”
  • Các câu lệnh elif tiếp theo tương tự, kiểm tra lần lượt các giá trị từ 3 đến 7 và in ra tên ngày tương ứng trong tuần.
  • else: Nếu tất cả các điều kiện trong if và elif đều sai (nghĩa là người dùng nhập một số không nằm trong khoảng từ 1 đến 7), câu lệnh else sẽ được thực thi và in ra dòng chữ “Invalid day.”, có nghĩa “Ngày không hợp lệ.”

Kết quả: Trong hình trên, bạn có thể thấy khi nhập số 7, chương trình sẽ in ra “It’s Sunday.”, có nghĩa “Hôm nay là Chủ Nhật.”. Khi nhập số 4, chương trình sẽ in ra “It’s Thursday.”, có nghĩa “Hôm nay là Thứ Năm. Khi nhập số 8, chương trình sẽ in ra “Invalid day.”, có nghĩa “Ngày không hợp lệ.”

Kết quả kiểm tra ngày trong tuần với nhiều điều kiện
Kết quả kiểm tra ngày trong tuần với nhiều điều kiện

Vietnix – Nhà cung cấp dịch vụ VPS Linux hiệu suất cao và bảo mật tối ưu

Vietnix tự hào là nhà cung cấp dịch vụ hạ tầng máy chủ uy tín tại thị trường Việt Nam, với giải pháp VPS Linux mạnh mẽ, tối ưu cho các nhu cầu hosting, website, game server, ứng dụng doanh nghiệp,… Vietnix cam kết mang đến cho bạn trải nghiệm chuyên nghiệp, hiệu quả, cùng với sự hỗ trợ kỹ thuật tận tâm 24/7, đảm bảo hoạt động trơn tru, ổn định cho hệ thống của bạn.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Mong rằng qua các ví dụ cụ thể như kiểm tra số dương hay âm, xác minh file và folder, kiểm tra tên người dùng,… bạn có thể hiểu và sử dụng một cách dễ dàng và hiệu quả lệnh else-if trong Bash. Hãy theo dõi blog của mình để tìm hiểu thêm nhiều câu lệnh khác trong Bash. Nếu có bất cứ vấn đề gì cần hỗ trợ, bạn đừng ngần ngại để lại bình luận phía bên dưới để mình cùng đội ngũ kỹ thuật của Vietnix hỗ trợ bạn. Chúc bạn thành công!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG