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ách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng
    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng

    dmidecode là một công cụ dòng lệnh trên Linux dùng để đọc và hiển thị thông tin phần cứng máy tính từ bảng DMI hoặc SMBIOS cung cấp bởi BIOS, giúp kiểm tra chi tiết như nhà sản xuất, model, số serial, BIOS, CPU, RAM mà không cần mở máy. Trong bài viết này, mình…

    27/02/2026

    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx
    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx

    Lệnh partx Linux là một công cụ dòng lệnh thuộc gói util-linux, được sử dụng để thêm, xóa hoặc liệt kê các phân vùng của thiết bị đĩa vào bảng phân vùng của hệ thống mà không cần khởi động lại hoặc gắn lại thiết bị. Trong bài viết này, mình sẽ hướng dẫn bạn…

    27/02/2026

    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng
    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng

    Trong môi trường quản trị Linux, việc kiểm tra tốc độ xung nhịp CPU là một thao tác cần thiết giúp người dùng đánh giá khả năng chịu tải, phát hiện các điểm nghẽn hiệu suất  và hỗ trợ tối ưu trong quá trình tối ưu hóa hoặc khắc phục sự cố phần cứng. Trong…

    27/02/2026

    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết
    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết

    Trong Linux, bộ nhớ cache là nơi lưu trữ tạm thời dữ liệu và các file đã truy cập gần đây để giảm thời gian truy xuất ở lần tiếp theo. Tuy nhiên, theo thời gian, bộ nhớ cache có thể chiếm dụng quá nhiều RAM, đặc biệt trên các máy chủ có uptime dài…

    27/02/2026

    linux

    lenh

    text