Kiến thức Hữu ích 😍

Câu lệnh if trong bash: Hướng dẫn cú pháp, kiểm tra điều kiện và ví dụ thực tế


Giới thiệu về câu lệnh if trong bash

Trong thế giới lập trình kịch bản shell, câu lệnh if là một trong những công cụ nền tảng và mạnh mẽ nhất. Nó đóng vai trò như một người gác cổng, cho phép bạn kiểm soát luồng thực thi của kịch bản dựa trên các điều kiện cụ thể. Bạn có muốn script của mình trở nên thông minh hơn, có khả năng tự đưa ra quyết định không? Nếu có, thì việc nắm vững câu lệnh if chính là bước đi đầu tiên và quan trọng nhất.

Tuy nhiên, nhiều người mới bắt đầu thường cảm thấy bối rối trước cú pháp và cách áp dụng của nó. Làm thế nào để kiểm tra một file có tồn tại hay không? Làm sao để so sánh hai con số hay hai chuỗi văn bản? Những câu hỏi này chính là rào cản khiến các kịch bản của bạn chưa thể phát huy hết tiềm năng. Bài viết này sẽ là kim chỉ nam dẫn lối, giúp bạn giải quyết triệt để những vướng mắc đó. Chúng ta sẽ cùng nhau mổ xẻ từ cú pháp cơ bản, cách sử dụng các toán tử so sánh, cho đến các biến thể phức tạp hơn như if-else và if-elif-else. Không chỉ dừng lại ở lý thuyết, bài viết còn cung cấp những ví dụ thực tế, giúp bạn hình dung rõ ràng cách áp dụng câu lệnh if vào việc tự động hóa các tác vụ hàng ngày. Hãy cùng bắt đầu hành trình chinh phục công cụ mạnh mẽ này nhé!

Cú pháp câu lệnh if cơ bản trong bash

Để bắt đầu viết những kịch bản thông minh, điều đầu tiên bạn cần nắm vững chính là cú pháp của câu lệnh if. Thoạt nhìn có vẻ lạ, nhưng một khi đã hiểu rõ cấu trúc, bạn sẽ thấy nó vô cùng logic và dễ nhớ. Hãy cùng khám phá những viên gạch đầu tiên xây dựng nên khả năng ra quyết định cho script của bạn.

Cấu trúc câu lệnh if đơn giản

Cấu trúc cơ bản nhất của câu lệnh if trong bash được thiết kế để thực thi một khối lệnh nếu một điều kiện nào đó là đúng. Nó giống như việc bạn ra lệnh: “Nếu trời mưa, thì hãy mang theo ô”. Cú pháp chuẩn của nó như sau:

if [ điều_kiện ]; then
    # Các lệnh sẽ được thực thi nếu điều_kiện là đúng
fi

Hãy cùng phân tích từng thành phần để hiểu rõ hơn:

  • if: Đây là từ khóa bắt đầu một khối lệnh điều kiện.
  • [ điều_kiện ]: Phần quan trọng nhất, nơi bạn đặt biểu thức logic cần kiểm tra. Dấu ngoặc vuông [ ] là một lệnh (tương đương với lệnh test) dùng để đánh giá điều kiện bên trong nó. Lưu ý rằng phải có khoảng trắng sau dấu [ và trước dấu ].
  • ; then: Dấu chấm phẩy ; dùng để ngăn cách điều kiện và từ khóa then trên cùng một dòng. Nếu bạn viết then ở dòng tiếp theo, dấu chấm phẩy là không bắt buộc. Từ khóa then báo hiệu rằng các lệnh tiếp theo sẽ được thực thi nếu điều kiện là đúng.
  • fi: Đây là từ khóa kết thúc khối lệnh if. Nó đơn giản là “if” viết ngược, một quy ước độc đáo trong bash scripting.

Hình minh họa

Điều kiện trong if: sử dụng test và [ ]

Như đã đề cập, dấu ngoặc vuông [ ] thực chất là một cách viết ngắn gọn của lệnh test. Cả hai đều có chức năng như nhau: đánh giá một biểu thức điều kiện và trả về trạng thái thoát (exit status) là 0 (đúng) hoặc khác 0 (sai). Câu lệnh if sẽ dựa vào trạng thái thoát này để quyết định có thực thi khối lệnh bên trong then...fi hay không.

Bạn có thể sử dụng test hoặc [ ] để thực hiện nhiều loại kiểm tra khác nhau, từ so sánh số học, so sánh chuỗi cho đến kiểm tra các thuộc tính của file. Ví dụ, để kiểm tra xem một file có tên là “config.txt” có tồn tại trong thư mục hiện tại hay không, bạn có thể viết:

if [ -f "config.txt" ]; then
    echo "Tìm thấy file config.txt."
fi

Hoặc để kiểm tra xem một biến có rỗng hay không:

username=""
if [ -z "$username" ]; then
    echo "Tên người dùng không được để trống."
fi

Việc hiểu rõ cách sử dụng [ ] và các toán tử kiểm tra bên trong nó là chìa khóa để khai thác toàn bộ sức mạnh của câu lệnh if.

Hình minh họa

Sử dụng câu lệnh if để kiểm tra điều kiện

Khi đã nắm được cú pháp cơ bản, bước tiếp theo là học cách xây dựng các điều kiện kiểm tra. Bash cung cấp một bộ toán tử phong phú để bạn có thể kiểm tra mọi thứ, từ các giá trị số học, nội dung chuỗi văn bản, cho đến trạng thái của các tập tin và thư mục trên hệ thống. Việc sử dụng thành thạo các toán tử này sẽ giúp kịch bản của bạn trở nên linh hoạt và đáp ứng được nhiều tình huống thực tế.

Kiểm tra điều kiện số học và chuỗi

Trong scripting, việc so sánh các con số và chuỗi là một tác vụ cực kỳ phổ biến. Bash cung cấp các toán tử riêng biệt cho từng loại dữ liệu.

Đối với so sánh số học, bạn sẽ sử dụng các toán tử viết tắt theo kiểu tiếng Anh:

  • -eq: Bằng nhau (Equal)
  • -ne: Không bằng nhau (Not Equal)
  • -gt: Lớn hơn (Greater Than)
  • -ge: Lớn hơn hoặc bằng (Greater or Equal)
  • -lt: Nhỏ hơn (Less Than)
  • -le: Nhỏ hơn hoặc bằng (Less or Equal)

Ví dụ, kiểm tra xem một người có đủ tuổi để bầu cử hay không:

age=20
if [ "$age" -ge 18 ]; then
    echo "Bạn đã đủ tuổi để bỏ phiếu."
fi

Đối với so sánh chuỗi, các toán tử sẽ khác đi một chút:

  • = hoặc ==: Chuỗi bằng nhau.
  • !=: Chuỗi không bằng nhau.
  • -z "chuoi": Kiểm tra xem chuỗi có rỗng không (độ dài bằng 0).
  • -n "chuoi": Kiểm tra xem chuỗi có khác rỗng không.

Ví dụ, yêu cầu người dùng nhập mật khẩu và kiểm tra xem có khớp không:

read -p "Nhập mật khẩu của bạn: " password
correct_password="azweb"
if [ "$password" = "$correct_password" ]; then
    echo "Mật khẩu chính xác. Chào mừng bạn!"
fi

Hình minh họa

Kiểm tra trạng thái file và quyền truy cập

Một trong những ứng dụng mạnh mẽ nhất của câu lệnh if trong bash là khả năng tương tác với hệ thống tập tin. Bạn có thể dễ dàng kiểm tra sự tồn tại của một file, xem nó là file thông thường hay thư mục, và kiểm tra các quyền truy cập như đọc, ghi, thực thi. Đây là những thao tác không thể thiếu trong các script tự động hay tự động hóa.

Dưới đây là một số toán tử kiểm tra file phổ biến nhất:

  • -e /path/to/file: Kiểm tra xem file hoặc thư mục có tồn tại không.
  • -f /path/to/file: Kiểm tra xem đó có phải là một file thông thường không.
  • -d /path/to/directory: Kiểm tra xem đó có phải là một thư mục không.
  • -r /path/to/file: Kiểm tra xem file có quyền đọc không.
  • -w /path/to/file: Kiểm tra xem file có quyền ghi không.
  • -x /path/to/file: Kiểm tra xem file có quyền thực thi không.

Hãy xem một ứng dụng thực tế: bạn muốn viết một script để ghi log, nhưng trước tiên cần đảm bảo thư mục log đã tồn tại. Nếu chưa, script sẽ tự động tạo nó.

LOG_DIR="/var/log/myapp"
if [ ! -d "$LOG_DIR" ]; then
    echo "Thư mục log chưa tồn tại. Đang tạo..."
    mkdir -p "$LOG_DIR"
fi
echo "Ghi log vào thư mục $LOG_DIR"

Trong ví dụ trên, toán tử ! được dùng để phủ định điều kiện, tức là “nếu KHÔNG phải là một thư mục”. Kỹ thuật này giúp script của bạn trở nên an toàn và đáng tin cậy hơn, tránh được các lỗi không đáng có khi thao tác với file.

Hình minh họa

Các biến thể và cách kết hợp if else trong bash

Khi kịch bản của bạn cần xử lý những tình huống phức tạp hơn, một câu lệnh if đơn giản là không đủ. Bash cung cấp các cấu trúc mở rộng như if-elseif-elif-else để bạn có thể xây dựng các luồng logic rẽ nhánh, giúp script đưa ra quyết định một cách linh hoạt. Giống như một người chỉ đường ở ngã ba, các cấu trúc này cho phép script của bạn chọn một trong nhiều con đường khác nhau dựa trên điều kiện đầu vào.

Câu lệnh if else cơ bản

Cấu trúc if-else cho phép bạn xác định một hành động sẽ được thực hiện khi điều kiện là đúng, và một hành động khác sẽ được thực hiện khi điều kiện là sai. Đây là cấu trúc “nếu… thì… ngược lại…” kinh điển trong lập trình.

Cú pháp của nó như sau:

if [ điều_kiện ]; then
    # Khối lệnh 1: Thực thi khi điều_kiện là đúng
else
    # Khối lệnh 2: Thực thi khi điều_kiện là sai
fi

Bạn nên sử dụng else khi bạn cần xử lý cả hai trường hợp của một điều kiện. Ví dụ, hãy viết một script kiểm tra xem một trang web có đang hoạt động hay không bằng cách dùng lệnh ping. Nếu ping thành công, thông báo trang web đang online; ngược lại, thông báo trang web có thể đang gặp sự cố.

TARGET="google.com"
ping -c 1 "$TARGET" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "$TARGET đang hoạt động."
else
    echo "Không thể kết nối đến $TARGET. Có thể trang web đang ngoại tuyến."
fi

Ở đây, biến đặc biệt $? chứa trạng thái thoát của lệnh gần nhất. Lệnh ping trả về 0 nếu thành công, vì vậy chúng ta kiểm tra điều kiện này để xác định kết quả.

Hình minh họa

Sử dụng elif để kiểm tra nhiều điều kiện

Khi bạn có nhiều hơn hai khả năng cần xử lý thì sao? Thay vì lồng nhiều câu lệnh if-else vào nhau một cách rối rắm, bạn có thể sử dụng elif (viết tắt của “else if”). Cấu trúc này cho phép bạn kiểm tra một chuỗi các điều kiện một cách tuần tự.

Cấu trúc if-elif-else hoạt động như một cái phễu lọc:

if [ điều_kiện_1 ]; then
    # Thực thi nếu điều_kiện_1 đúng
elif [ điều_kiện_2 ]; then
    # Thực thi nếu điều_kiện_1 sai VÀ điều_kiện_2 đúng
elif [ điều_kiện_3 ]; then
    # Thực thi nếu cả hai điều kiện trên sai VÀ điều_kiện_3 đúng
else
    # Thực thi nếu tất cả các điều kiện trên đều sai
fi

Hãy xem một ví dụ minh họa. Giả sử bạn muốn viết một script phân loại học sinh dựa trên điểm số:

read -p "Nhập điểm số của học sinh (0-100): " score
if [ "$score" -ge 90 ]; then
    echo "Xếp loại: Xuất sắc"
elif [ "$score" -ge 80 ]; then
    echo "Xếp loại: Giỏi"
elif [ "$score" -ge 65 ]; then
    echo "Xếp loại: Khá"
elif [ "$score" -ge 50 ]; then
    echo "Xếp loại: Trung bình"
else
    echo "Xếp loại: Yếu"
fi

Cấu trúc này giúp mã nguồn của bạn trở nên sạch sẽ, dễ đọc và dễ bảo trì hơn rất nhiều so với việc sử dụng các câu lệnh if lồng nhau.

Ví dụ thực tế áp dụng if trong kịch bản shell

Lý thuyết chỉ thực sự trở nên hữu ích khi được áp dụng vào thực tế. Câu lệnh if không chỉ là một khái niệm trừu tượng, nó là công cụ cốt lõi để xây dựng các kịch bản tự động hóa mạnh mẽ. Dưới đây là hai ví dụ điển hình cho thấy cách bạn có thể sử dụng if để giải quyết các vấn đề thường gặp trong quản trị hệ thống và vận hành dịch vụ.

Viết script kiểm tra file và thực hiện hành động

Một trong những tác vụ phổ biến nhất là quản lý các file log. Các file này có thể lớn lên rất nhanh, chiếm dụng không gian đĩa. Một kịch bản tự động có thể giúp bạn kiểm tra và sao lưu chúng định kỳ. Dưới đây là một script kiểm tra file access.log. Nếu file tồn tại và kích thước của nó vượt quá 10MB, script sẽ nén nó lại, đặt tên với dấu thời gian, và sau đó xóa nội dung file log gốc để bắt đầu ghi mới.

#!/bin/bash

LOG_FILE="/var/log/nginx/access.log"
BACKUP_DIR="/var/log/nginx/backups"
MAX_SIZE=10485760 # 10MB tính bằng bytes

# Đảm bảo thư mục sao lưu tồn tại
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
fi

# Kiểm tra xem file log có tồn tại không
if [ -f "$LOG_FILE" ]; then
    file_size=$(stat -c%s "$LOG_FILE")
    if [ "$file_size" -gt "$MAX_SIZE" ]; then
        echo "File log đã vượt quá 10MB. Đang tiến hành sao lưu..."
        timestamp=$(date +%Y-%m-%d_%H-%M-%S)
        gzip -c "$LOG_FILE" > "$BACKUP_DIR/access.log-$timestamp.gz"
        > "$LOG_FILE" # Xóa nội dung file log
        echo "Sao lưu hoàn tất."
    else
        echo "Kích thước file log vẫn trong giới hạn cho phép."
    fi
else
    echo "Không tìm thấy file log: $LOG_FILE"
fi

Script này sử dụng if lồng nhau để kiểm tra hai điều kiện: sự tồn tại của file và kích thước của nó. Để khai thác tối đa hiệu quả của script, hãy tìm hiểu thêm quản lý tệp trong Bash.

Hình minh họa

Tạo script tự động kiểm tra trạng thái dịch vụ

Đối với những người quản trị máy chủ VPS hay Hosting, việc đảm bảo các dịch vụ quan trọng như web server (ví dụ: Nginx) hay database (ví dụ: MySQL) luôn hoạt động là ưu tiên hàng đầu. Một kịch bản kiểm tra sức khỏe dịch vụ có thể tự động phát hiện sự cố và cố gắng khắc phục nó.

Script dưới đây sử dụng systemctl (trên các hệ thống dùng systemd như Ubuntu, CentOS 7+) để kiểm tra trạng thái của dịch vụ Nginx. Nếu dịch vụ không hoạt động, nó sẽ ghi nhận lại thời gian xảy ra sự cố và cố gắng khởi động lại dịch vụ.

#!/bin/bash

SERVICE_NAME="nginx"
LOG_FILE="/var/log/service_monitor.log"

# Sử dụng systemctl để kiểm tra trạng thái dịch vụ một cách thầm lặng
systemctl is-active --quiet "$SERVICE_NAME"

# Kiểm tra trạng thái thoát của lệnh trên
# 0 nghĩa là đang hoạt động, khác 0 là không hoạt động
if [ $? -ne 0 ]; then
    timestamp=$(date +"%Y-%m-%d %T")
    echo "[$timestamp] Dịch vụ $SERVICE_NAME không hoạt động! Đang cố gắng khởi động lại..." | tee -a "$LOG_FILE"

    # Cố gắng khởi động lại dịch vụ
    systemctl start "$SERVICE_NAME"

    # Kiểm tra lại sau khi khởi động
    sleep 2 # Chờ 2 giây để dịch vụ có thời gian khởi động
    systemctl is-active --quiet "$SERVICE_NAME"
    if [ $? -eq 0 ]; then
        echo "[$timestamp] Dịch vụ $SERVICE_NAME đã được khởi động lại thành công." | tee -a "$LOG_FILE"
    else
        echo "[$timestamp] KHÔNG THỂ khởi động lại dịch vụ $SERVICE_NAME. Cần kiểm tra thủ công!" | tee -a "$LOG_FILE"
    fi
else
    echo "Dịch vụ $SERVICE_NAME đang hoạt động bình thường."
fi

Bạn có thể đặt kịch bản này chạy định kỳ bằng cron job để hệ thống có khả năng tự phục hồi cơ bản.

Hình minh họa

Lưu ý và các lỗi thường gặp khi sử dụng câu lệnh if

Mặc dù cú pháp của câu lệnh if khá đơn giản, nhưng có một vài cạm bẫy mà người mới bắt đầu thường xuyên mắc phải. Những lỗi này thường liên quan đến các chi tiết nhỏ như khoảng trắng hay việc sử dụng sai loại dấu ngoặc. Hiểu rõ những lỗi này sẽ giúp bạn tiết kiệm rất nhiều thời gian gỡ lỗi và viết script một cách tự tin hơn.

Lỗi cú pháp phổ biến với dấu ngoặc vuông và khoảng trắng

Đây có lẽ là lỗi phổ biến nhất. Trong bash, khoảng trắng có vai trò rất quan trọng, nó được dùng để phân tách các từ khóa, lệnh và tham số. Đối với câu lệnh if, bạn phải tuyệt đối tuân thủ quy tắc về khoảng trắng xung quanh dấu ngoặc vuông [ ]. Để hiểu đầy đủ về cú pháp và cách viết câu lệnh chuẩn, bạn có thể tham khảo thêm cú pháp trong Bash.

Lỗi sai: if["$VAR"="$VALUE"]; then

Cách viết đúng: if [ "$VAR" = "$VALUE" ]; then

Lý do là vì [ không phải là một ký tự nhóm thông thường, mà nó là một lệnh (một bí danh của lệnh test). Giống như bất kỳ lệnh nào khác, nó cần có khoảng trắng để phân tách nó với các đối số của mình. Nếu bạn viết liền, bash sẽ hiểu ["$VAR"="$VALUE"] là một chuỗi duy nhất và sẽ báo lỗi “command not found”.

Tương tự, một lỗi khác là quên fi ở cuối khối lệnh. Khi đó, bạn sẽ nhận được một thông báo lỗi như: syntax error: unexpected end of file. Điều này có nghĩa là bash đã đọc đến cuối file mà vẫn chưa tìm thấy từ khóa để đóng khối if đang mở.

Hình minh họa

Sử dụng sai loại dấu ngoặc hoặc tham số trong test

Bash có nhiều loại dấu ngoặc khác nhau, và mỗi loại có một mục đích riêng. Việc nhầm lẫn giữa chúng có thể dẫn đến những hành vi không mong muốn hoặc lỗi cú pháp.

Sử dụng ( ) thay vì [ ] hoặc [[ ]]:

Dấu ngoặc đơn ( ) được dùng để thực thi lệnh trong một subshell (shell con). Nếu bạn viết if ( "$VAR" = "$VALUE" ), script sẽ cố gắng thực thi "$VAR" như một lệnh, điều này gần như chắc chắn sẽ gây ra lỗi.

Nhầm lẫn giữa [ ][[ ]]:

  • [ ] (test): Đây là lệnh chuẩn, tương thích với hầu hết các shell. Tuy nhiên, nó có một số hạn chế. Ví dụ, bạn phải luôn đặt các biến trong dấu ngoặc kép (ví dụ: "$VAR") để tránh lỗi khi biến rỗng hoặc chứa khoảng trắng.
  • [[ ]] (compound command): Đây là một từ khóa của bash, mang lại nhiều cải tiến. Nó linh hoạt hơn, không yêu cầu phải đặt biến trong ngoặc kép trong nhiều trường hợp, và hỗ trợ các toán tử nâng cao như so sánh mẫu với == (ví dụ: [[ "$file" == *.txt ]]) và toán tử logic &&, || ngay bên trong.

Quên dấu $ khi tham chiếu biến:

Một sai lầm cơ bản nhưng dễ mắc phải là quên đặt dấu $ trước tên biến bên trong điều kiện. Ví dụ, viết if [ my_var -eq 10 ] thay vì if [ $my_var -eq 10 ]. Khi đó, bash sẽ coi my_var là một chuỗi ký tự thông thường chứ không phải giá trị của biến.

Best Practices

Viết một script hoạt động được là một chuyện, nhưng viết một script sạch sẽ, dễ đọc, và dễ bảo trì lại là một chuyện khác. Khi làm việc với câu lệnh if và logic điều kiện, việc tuân thủ một số quy tắc thực hành tốt nhất (best practices) sẽ giúp bạn và những người khác làm việc với mã nguồn của bạn dễ dàng hơn rất nhiều. Dưới đây là những mẹo quan trọng bạn nên áp dụng.

Luôn sử dụng khoảng trắng đúng cách trong câu lệnh if
Đây là quy tắc cơ bản nhất nhưng cũng quan trọng nhất. Hãy luôn nhớ đặt một khoảng trắng sau dấu [ hoặc [[ và một khoảng trắng trước dấu ] hoặc ]]. Tương tự, các toán tử so sánh như =, -eq, -gt cũng cần có khoảng trắng ở cả hai bên. Việc này không chỉ giúp tránh lỗi cú pháp mà còn làm cho code của bạn dễ đọc hơn rất nhiều. Để nắm chắc về cú pháp, hãy đọc thêm Cú pháp trong Bash.

Nên: if [ "$count" -gt 5 ]; then
Không nên: if[$count-gt 5];then

Hình minh họa

Ưu tiên dùng [[ ]] để kiểm tra điều kiện phức tạp và tránh lỗi
Mặc dù [ ] hoạt động tốt và có tính tương thích cao, [[ ]] là một lựa chọn hiện đại và an toàn hơn trong bash. Nó xử lý các biến rỗng hoặc chứa khoảng trắng một cách thông minh hơn, giúp bạn tránh được nhiều lỗi tiềm ẩn về word splitting. Ngoài ra, [[ ]] còn hỗ trợ các toán tử mạnh mẽ như so sánh mẫu (globbing) và biểu thức chính quy (regex), giúp việc kiểm tra chuỗi trở nên linh hoạt hơn.

Ví dụ: if [[ "$filename" == *.log && "$size" -gt 1000 ]]; then

Sử dụng comment rõ ràng để giải thích logic trong script
Khi logic của bạn trở nên phức tạp với nhiều điều kiện ifelif, hãy dành thời gian để viết các comment giải thích. Comment không làm thay đổi cách script hoạt động, nhưng nó giúp người đọc (bao gồm cả bạn trong tương lai) hiểu được tại sao bạn lại viết đoạn mã đó. Một comment tốt sẽ giải thích mục đích của khối lệnh, chứ không chỉ mô tả lại những gì câu lệnh đang làm.

Ví dụ:
# Kiểm tra xem người dùng có phải là root không, vì script cần quyền admin để cài đặt phần mềm
if [[ $EUID -ne 0 ]]; then

Tránh lồng if quá sâu và ưu tiên viết hàm cho đoạn kiểm tra phức tạp
Các khối if lồng vào nhau nhiều lớp (nested if) có thể nhanh chóng trở nên khó đọc và khó theo dõi. Nếu bạn thấy mình đang viết một cấu trúc if...if...if... dài dòng, hãy cân nhắc tái cấu trúc lại nó. Một cách hiệu quả là tách logic kiểm tra phức tạp ra một hàm riêng. Hàm này sẽ thực hiện việc kiểm tra và trả về một kết quả (đúng/sai), giúp cho khối if chính của bạn trở nên đơn giản và sáng sủa hơn.

Kiểm tra kỹ cú pháp trước khi chạy script để tránh lỗi runtime
Trước khi thực thi một kịch bản quan trọng, đặc biệt là trên môi trường production, hãy sử dụng các công cụ để kiểm tra cú pháp. Chạy script với cờ -n (bash -n your_script.sh) sẽ chỉ kiểm tra cú pháp mà không thực thi lệnh. Một công cụ mạnh mẽ hơn là shellcheck, nó có thể phát hiện ra hàng trăm lỗi phổ biến và đưa ra những gợi ý cải thiện chất lượng mã nguồn của bạn.

Kết luận

Qua hành trình tìm hiểu từ cú pháp cơ bản đến các ví dụ thực tế, chúng ta có thể thấy rằng câu lệnh if không chỉ là một phần của bash scripting, mà nó chính là bộ não của kịch bản. Việc nắm vững cách sử dụng if, else, và elif cho phép bạn tạo ra những script thông minh, có khả năng phản ứng linh hoạt với các tình huống khác nhau. Bạn đã học được cách kiểm tra điều kiện số học, chuỗi, trạng thái file, cũng như cách tránh các lỗi cú pháp phổ biến về khoảng trắng và dấu ngoặc. Những kiến thức này là nền tảng vững chắc để bạn kiểm soát luồng thực thi một cách hiệu quả, giúp các kịch bản tự động hóa trở nên đáng tin cậy và mạnh mẽ hơn.

Lý thuyết sẽ trở nên vô nghĩa nếu không có thực hành. Ngay bây giờ, hãy thử áp dụng những gì bạn vừa học vào công việc của mình. Bắt đầu bằng việc viết một kịch bản nhỏ để kiểm tra dung lượng ổ đĩa, tự động sao lưu một file cấu hình quan trọng, hoặc giám sát một dịch vụ trên VPS của bạn. Chính những bước đi nhỏ này sẽ giúp bạn củng cố kiến thức và biến kỹ năng viết script trở thành một công cụ đắc lực trong công việc hàng ngày.

Hành trình chinh phục bash scripting vẫn còn ở phía trước. Sau khi đã thành thạo câu lệnh if, bước tiếp theo tự nhiên sẽ là tìm hiểu về các cấu trúc lặp như vòng lặp for, while và câu lệnh case. Việc kết hợp các cấu trúc điều khiển luồng này sẽ mở ra một chân trời mới, cho phép bạn viết những kịch bản có khả năng xử lý các tác vụ phức tạp và lặp đi lặp lại một cách dễ dàng và hiệu quả hơn. Bạn có thể tham khảo thêm về vòng lặp trong Bashcâu lệnh case trong Bash để tiếp tục nâng cao kỹ năng.

Đánh giá