Lấy cấu hình để chạy mã bash an toàn hơn

Chẳng khoe thì ai cũng biết anh có cái TIME live – Chụp ảnh lấy ngay được chạy bằng cách kết hợp giữa mã bash với lại WordPress.

Cấu trúc dữ liệu trong tập tin cấu hình cho đoạn mã bash nó như này:

VAR_1='Option value 1'
VAR_2='Option value 2'
VAR_N='Option value n'

Thông thường thì cái timelive.sh sẽ lấy cấu hình bằng hàm . (hoặc source). Cách này rất tiện, ra ngay các biến $VAR_1, $VAR_2.

Nhưng nếu chẳng may bị hách cơ chèn một lệnh kiểu như rm -rf * vào thì nó cũng chạy mẹ nó lệnh đấy luôn. Rất là nguy hiểm!

Sau nhiều hồi gu gờ các kiểu thì anh cũng tạm ra một giải pháp trông có vẻ an toàn hơn.

timelive_vars=$(sed -nr "/^[A-Z0-9_]+='[^']+'$/p" < timelive.config)

eval "$timelive_vars"

Như vậy, anh dùng sed để lọc lấy các dòng đúng theo cấu trúc dữ liệu hợp lệ. Những dòng không hợp lệ sẽ bị loại bỏ. Sau đó thì mới dùng eval “chạy” lại dữ liệu để có các biến $VAR_1, $VAR_2 như mong muốn.