Liên hệProfile
Danh mục

Mục Lục

    Shell script là gì? Cách viết shell script dành cho người mới bắt đầu

    Nguyễn Hưng

    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Mục lục

    Viết shell script là cách bạn gom nhiều câu lệnh Linux vào một tệp duy nhất để shell tự động thực thi lần lượt, giúp tiết kiệm thời gian và hạn chế sai sót khi thao tác lặp lại. Trong bài viết này, bạn sẽ tìm hiểu từ khái niệm cơ bản đến cách viết shell script bằng cách sử dụng biến, điều kiện, vòng lặp và mẹo gỡ lỗi để áp dụng hiệu quả vào công việc hằng ngày.

    Những điểm chính

    • Khái niệm: Hiểu rõ shell script là một tệp văn bản chứa dãy lệnh, giúp tự động hóa các thao tác lặp lại và tiết kiệm thời gian.
    • Những điều cần nắm khi sử dụng shell script: Nắm vững cách tạo script, sử dụng biến, comment, câu lệnh điều kiện và vòng lặp, giúp bạn xây dựng các script có cấu trúc, dễ đọc và hiệu quả.
    • Xử lý lỗi: Biết cách gỡ rối các sự cố phổ biến như quyền truy cập và lỗi cú pháp, giúp bạn nhanh chóng khắc phục và hoàn thiện script của mình.
    • Câu hỏi thường gặp: Được giải đáp các thắc mắc về các dạng bài tập, cách bắt đầu học và sự khác biệt giữa script với lệnh trực tiếp, giúp củng cố kiến thức và làm rõ các vấn đề thực tế.

    Shell script là gì?

    Shell script là một tệp văn bản chứa một dãy lệnh dòng lệnh để shell trên hệ điều hành Unix/Linux (như Bash) đọc và thực thi lần lượt.​ Shell script cho phép gộp nhiều thao tác gõ lệnh rời rạc thành một chương trình tự động hóa duy nhất, giúp tiết kiệm thời gian và hạn chế sai sót khi lặp lại thao tác.

    Shell script là một tệp văn bản chứa một dãy lệnh dòng lệnh để shell trên hệ điều hành Unix/Linux (như Bash) đọc và thực thi lần lượt
    Shell script là một tệp văn bản chứa một dãy lệnh dòng lệnh để shell trên hệ điều hành Unix/Linux (như Bash) đọc và thực thi lần lượt

    Cách tạo shell scripts

    Bạn truy cập máy chủ qua SSH và tạo file có phần mở rộng .sh bằng lệnh:

    touch script.sh

    Output:

    Kết quả trả về khi dùng lệnh touch script.sh
    Kết quả trả về khi dùng lệnh touch script.sh

    Mặc định file vừa tạo chưa có quyền thực thi, bạn cần thêm quyền thực thi với lệnh sau:

    chmod +x script.sh

    Output:

    Kết quả trả về khi thêm lệnh chmod +x script.sh
    Kết quả trả về khi thêm lệnh chmod +x script.sh

    Sau đó, bạn cần ghi một vài command vào tệp script.sh để kiểm tra:

    vi script.sh

    Tiếp theo, bạn hãy thêm các dòng lệnh sau để in thông điệp ra màn hình, tạo tệp mới và xem danh sách file:

    echo "Bắt đầu Shell script tạo file có tên file_new"
    touch file_new
    ls -l
    echo "Kết thúc shell script"

    Output:

    Bạn hãy thêm các dòng lệnh sau để in thông điệp ra màn hình, tạo tệp mới và xem danh sách file
    Bạn hãy thêm các dòng lệnh sau để in thông điệp ra màn hình, tạo tệp mới và xem danh sách file

    Cuối cùng, bạn cần lưu tệp và thực thi script với cú pháp sau:

    ./script.sh

    Output:

    Bạn cần lưu tệp và thực thi script với cú pháp ./script.sh
    Bạn cần lưu tệp và thực thi script với cú pháp ./script.sh

    Comment trong shell script

    Bất kỳ dòng nào trong script bắt đầu bằng ký tự # thì các command ở phần còn lại của dòng đó sẽ không được thực thi.

    Ví dụ:
    # đây là comment
    echo “Đây là ví dụ của comment trong shell script”

    Output:

    Bất kỳ dòng nào trong script bắt đầu bằng ký tự # thì các command ở phần còn lại của dòng đó sẽ không được thực thi
    Bất kỳ dòng nào trong script bắt đầu bằng ký tự # thì các command ở phần còn lại của dòng đó sẽ không được thực thi
    Output của ví dụ
    Output của ví dụ

    Biến trong Shell Script

    Trong Shell script có hỗ trợ biến (variables) và không yêu cầu định nghĩa kiểu dữ liệu trước khi sử dụng. Chúng có 2 kiểu dữ liệu chính là:

    • System Defined variables: Là biến được hệ thống định nghĩa sẵn.
    • User-Defined Variables: Là biến do người dùng tự định nghĩa.

    Để gán giá trị vào biến, bạn cần dùng toán tử “=” và không được khoảng cách ở trước và sau toán tử “=”. Nếu muốn lấy giá trị của biến thì bạn cần dùng “$” đặt trước tên biến.

    Ví dụ:

    #sử dụng biến của hệ thống
    echo $USER

    #Định nghĩa biến của người dùng
    name=vietnix
    echo $name

    Output:

    Để gán giá trị vào biến, bạn cần dùng toán tử “=” và không được khoảng cách ở trước và sau toán tử “="
    Để gán giá trị vào biến, bạn cần dùng toán tử “=” và không được khoảng cách ở trước và sau toán tử “=”
    Output của ví dụ bên trên
    Output của ví dụ bên trên

    Chỉ định trình biên dịch

    Khi viết shell script (tệp .sh), dòng đầu tiên thường là dòng đặc biệt dùng để chỉ định chương trình interpreter chịu trách nhiệm thực thi các lệnh bên trong script. Với Bash, đường dẫn thường dùng ở dòng này là:

    #!/bin/bash

    Toán tử so sánh trong shell script

    So sánh số nguyên

    Toán tửÝ nghĩa
    -eqSo sánh bằng nhau
    -neSo sánh khác nhau
    -gtSo sánh lớn hơn
    -geSo sánh lớn hơn hoặc bằng
    -ltSo sánh nhỏ hơn
    -leSo sánh nhỏ hơn hoặc bằng

    So sánh chuỗi

    Toán tửÝ nghĩa
    ==So sánh bằng nhau
    !=So sánh khác nhau
    <So sánh chuỗi nhỏ hơn theo thứ tự bảng chữ cái ASCII
    >So sánh chuỗi lớn hơn theo thứ tự bảng chữ cái ASCII

    Câu lệnh điều kiện trong shell script

    Trong shell script, câu lệnh điều kiện dùng để kiểm tra một điều kiện xác định và thực hiện hành động tương ứng với kết quả true hoặc false, tương tự cấu trúc if/else trong nhiều ngôn ngữ lập trình khác. Cú pháp câu lệnh điều kiện trong shell script:

    if [ điều_kiện ]; then
        # lệnh nếu điều kiện đúng
    fi

    Bạn cũng có thể mở rộng thêm câu điều kiện theo cú pháp sau:

    if [ điều_kiện ]; then
        # nếu đúng
    else
        # nếu sai
    fi

    Ví dụ:

    #!/bin/bash
    a=5
    b=10
    if [ $a -lt $b ]; then
    echo “$a nhỏ hơn $b”
    else
    echo “$a lớn hơn $b”
    fi

    Output:

    Câu lệnh điều kiện dùng để kiểm tra một điều kiện xác định và thực hiện hành động tương ứng với kết quả true hoặc false
    Câu lệnh điều kiện dùng để kiểm tra một điều kiện xác định và thực hiện hành động tương ứng với kết quả true hoặc false

    Kết quả:

    Kết quả của câu lệnh trên
    Kết quả của câu lệnh trên

    Bạn sửa lại biến a thành 20 để kiểm tra tới else:

    Bạn sửa lại biến a thành 20 để kiểm tra tới else
    Bạn sửa lại biến a thành 20 để kiểm tra tới else

    Kết quả:

    Kết quả khi thay đổi biến a thành 20
    Kết quả khi thay đổi biến a thành 20

    Nếu bạn có nhiều hơn 2 điều kiện thì có thể áp dụng cấu trúc sau:

    if [ điều_kiện_1 ]; then
        # nếu điều kiện 1 đúng
    elif [ điều_kiện_2 ]; then
        # nếu điều kiện 2 đúng
    else
        # nếu không điều kiện nào đúng
    fi

    Vòng lặp trong shell script

    Bạn có thể áp dụng vòng lặp trong shell script với cú pháp:

    for variable in item1 item2 item3; do
      # Lệnh cần thực hiện
    done

    Ví dụ:

    for name in “Alice” “Bob” “Charlie”; do
    echo “Xin chào $name”
    done

    Output:

    Kết quả của câu lệnh vòng lặp bên trên
    Kết quả của câu lệnh vòng lặp bên trên

    Đối số trong shell script

    Trong shell script, đối số là các giá trị được truyền vào script hoặc hàm tại thời điểm thực thi và được truy cập thông qua các biến vị trí như $1, $2, $3,… Bên cạnh đó, shell còn cung cấp một số biến đối số đặc biệt thường dùng như:

    • $#: Số lượng đối số được truyền vào script.
    • $0: Tên của script.
    • $?: Dùng để in mã thoát của chương trình.

    Ví dụ:

    #!/bin/bash
    echo “Số lượng đối số được truyền vào: $#”
    echo “Tên của script $0”
    echo “Đối số thứ nhất: $1”
    echo “Đối số thứ hai: $2”

    Output:

    Bạn cần gõ câu lệnh trong ví dụ để thực hành
    Bạn cần gõ câu lệnh trong ví dụ để thực hành
    Kết quả của câu lệnh phía trên
    Kết quả của câu lệnh phía trên

    Lưu kết quả đầu ra vào biến

    Bạn hoàn toàn có thể lưu kết quả đầu ra vào biến trong shell script thông qua cú pháp:

    variable=$(command)
    hoặc 
    variable=`command`

    Ví dụ:

    #!/bin/bash
    a=$(pwd)
    b=`pwd`
    echo $a
    echo $b

    Output:

    Lệnh để lưu kết quả đầu ra vào biến
    Lệnh để lưu kết quả đầu ra vào biến
    Kết quả của câu lệnh phía trên
    Kết quả của câu lệnh phía trên

    Cách gỡ một số lỗi shell script phổ biến

    Gỡ lỗi các sự cố phổ biến trong shell script có thể tập trung vào một số lỗi điển hình và cách xử lý như sau:

    • Quyền bị từ chối: Kiểm tra lại quyền thực thi của script và cấp quyền bằng lệnh chmod +x ten_script.sh để cho phép thực thi tệp.​
    • Không tìm câu thấy lệnh: Xem lại dòng shebang ở đầu script có chỉ đúng trình thông dịch hay không và kiểm tra script đã nằm trong thư mục thuộc PATH hay chưa.​
    • Script không chạy như mong đợi: Chạy script với bash -x ten_script.sh để kích hoạt chế độ gỡ lỗi, theo dõi từng lệnh được thực thi và xác định vị trí gây lỗi.​
    Cách gỡ một số lỗi shell script phổ biến
    Cách gỡ một số lỗi shell script phổ biến

    Câu hỏi thường gặp

    Bài tập lập trình Shell trong Linux gồm những dạng nào?

    Các bài tập thường gặp các bài tập đọc ghi file, xử lý chuỗi, thao tác với biến, tham số dòng lệnh, cấu trúc điều kiện và vòng lặp để luyện cú pháp shell cơ bản.​

    Học lập trình shell trên Ubuntu bắt đầu từ đâu?

    Bạn có thể bắt đầu bằng việc viết các script .sh đơn giản với shebang #!/bin/bash, dùng các lệnh cơ bản, sau đó mở rộng sang biến, điều kiện, vòng lặp và hàm.

    Có nguồn bài tập shell script Linux kèm lời giải không?

    Nhiều blog kỹ thuật và diễn đàn hay tài liệu giảng dạy Linux cung cấp bộ bài tập shell script kèm hướng dẫn hoặc gợi ý lời giải để tự đối chiếu.

    Shell script cơ bản thường bao gồm những phần nào?

    Một script cơ bản thường có shebang ở dòng đầu, phần khai báo biến, các lệnh xử lý chính, có thể kèm theo câu lệnh điều kiện và vòng lặp.

    Script trong Linux khác gì so với gõ lệnh trực tiếp?

    Script cho phép lưu sẵn nhiều lệnh trong một tệp và thực thi hàng loạt chỉ với một lần chạy, thay vì phải gõ thủ công từng lệnh trong terminal.

    Có thể chạy file .sh trên Windows hay không?

    Bạn có thể sử dụng WSL, Git Bash hoặc môi trường giả lập Unix (như Cygwin) trên Windows để chạy file .sh tương tự như trên Linux.

    Viết shell script không chỉ đơn thuần là gõ lệnh, mà là bước đầu để bạn làm chủ tư duy tự động hóa và tối ưu hiệu suất quản trị hệ thống. Hy vọng những kiến thức cơ bản về biến, điều kiện và vòng lặp trong bài viết sẽ là nền tảng vững chắc cho hành trình lập trình của bạn.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Các lệnh tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây
    Các lệnh tìm file trong Linux mới tạo hoặc mới chỉnh sửa gần đây

    Các lệnh tìm file trong Linux sẽ liệt kê các file vừa được tạo hoặc thay đổi từ đầu ngày đến thời điểm hiện tại, thường được ứng dụng cho thao tác kiểm tra hoặc tự động hóa trên Linux. Trong bài viết này, mình sẽ giới thiệu hai phương pháp hiệu quả và phổ…

    16/01/2026

    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp
    Enterprise Cloud là gì? Những tính năng và lợi ích khi sử dụng Enterprise Cloud cho doanh nghiệp

    Enterprise Cloud là mô hình hạ tầng điện toán đám mây được thiết kế riêng cho doanh nghiệp, kết hợp độ linh hoạt của đám mây công cộng với mức độ kiểm soát, bảo mật và tùy biến giống hạ tầng riêng. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu về khái…

    16/01/2026

    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng
    Tổng hợp thông tin về Amazon S3 và những lợi ích khi sử dụng

    S3 là dịch vụ lưu trữ đối tượng trên đám mây của Amazon, có tên đầy đủ là Amazon Simple Storage Service (Amazon S3). Dịch vụ này cho phép lưu trữ, truy xuất dữ liệu qua Internet với khả năng mở rộng rất lớn, độ sẵn sàng và bảo mật cao. Trong bài viết này,…

    16/01/2026

    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả
    Cách sử dụng lệnh mkdir để quản lý thư mục và tự động hóa hiệu quả

    Lệnh mkdir là lệnh dùng để tạo thư mục mới trong hệ thống file trên Linux/Unix. Đây là công cụ cơ bản để xây dựng và tổ chức cấu trúc thư mục, đặc biệt quan trọng trong các script cài đặt, deploy và tự động hóa. Trong bài viết này, mình sẽ hướng dẫn cách…

    14/01/2026