Công cụ 22/09/2026 6 phút

Quoting trong shell: vì sao quên "dấu ngoặc kép quanh biến" là bug #1 của script bash

Quên quote biến ($f thay vì "$f") là lỗi shell phổ biến và nguy hiểm nhất: khi giá trị có dấu cách, shell tách nó thành nhiều đối số. Bài này chạy thật để thấy ls $f biến một tên file thành 4 đối số lỗi, biến chứa * bị nở thành tên file, nháy đơn vs kép, và cái bẫy rm -rf $var/* biến rỗng thành rm -rf /*.

Công cụ 22/09/2026 6 phút

Exit code và set -e: vì sao script "an toàn" vẫn âm thầm nuốt lỗi

set -e tưởng làm script dừng ngay khi có lỗi, nhưng nó có nhiều ngoại lệ khiến lỗi lọt qua — nguy hiểm nhất là exit code của pipe chỉ lấy lệnh cuối. Bài này chạy thật: exit code từng lệnh, set -e dừng ở đâu và KHÔNG dừng ở đâu, bẫy false | echo trả 0, và bộ ba set -euo pipefail bắt cả biến chưa gán.

Công cụ 22/09/2026 6 phút

Vì sao script shell hỏng: shellcheck bắt cả loạt bẫy trước khi chạy

Mọi bẫy đã gặp suốt loạt Unix — quên quote biến, rm -rf $var/* với biến rỗng, lặp qua ls, biến chưa gán — đều bị một công cụ bắt tự động: shellcheck. Bài này chạy shellcheck thật trên một script đầy lỗi, xem nó chỉ ra SC2086/SC2115/SC2045 kèm cách sửa, và dùng exit code để chặn bug trong CI.