Bài viết chỉ cách dùng biến trong Bash và Shell script trên Linux.
Bash (hoặc Linux Shell) script là file chứa lệnh tự động hóa tác vụ thường gặp, tiết kiệm thời gian.
Biến (Variables) là thứ trong script giữ giá trị dùng sau – số, tên file, hoặc bất cứ thứ gì.
Cách định nghĩa và dùng biến trong Linux Shell script. Ví dụ hoạt động trên Bash, Zsh phổ biến.
Khai báo biến Bash
BIẾN BASH KHÔNG CÓ KIỂU (UNTYPED) MẶC ĐỊNH. Không thể báo cho nó biết biến làm gì – nó ngầm hiểu.
Bản chất, tất cả biến lưu như string và xử lý theo ngữ cảnh khi dùng – nếu string chứa số, sẽ coi như số khi tăng/giảm, v.v.
Dưới đây khai báo vài biến – MY_STRING, MY_FILE_PATH, và MY_NUMBER. Đều là biến untyped.
#!/bin/bash MY_STRING="Hello Linux!" MY_FILE_PATH=/path/to/my/file.txt MY_NUMBER=4
Xem thêm về #! tại đây
Cú pháp lệnh ‘declare’
Lưu ý declare chỉ dành cho môi trường Bash và có thể không có nếu dùng shell khác.
Cú pháp declare:
declare TUY_CHON ten_bien=gia_tri_bien
Lưu ý:
- TUY_CHON tùy chọn, chọn từ bảng dưới để đặt kiểu/hành vi biến
- ten_bien tên biến muốn định nghĩa/khai báo
- gia_tri_bien giá trị biến
| Tùy chọn declare | Ý nghĩa | |
|---|---|---|
| -r | readonly | Khai báo biến chỉ đọc |
| -i | integer | Khai báo biến số nguyên |
| -a | array | Khai báo biến mảng |
| -f | function(s) | Khai báo biến là function |
| -x | export | Khai báo biến export ra ngoài script |
Ví dụ lệnh ‘declare’
Khai báo biến string (không TUY_CHON), tiếp theo biến integer.
#!/bin/bash declare MY_STRING="Hello Linux!" declare -i MY_NUMBER=4
Giờ gán giá trị MY_STRING cho MY_NUMBER, MY_NUMBER thành 0 – vì string không evaluate thành số.
declare chỉ cung cấp typing cơ bản, không nên phụ thuộc – nhưng hữu ích để đảm bảo biến chỉ chứa kiểu giá trị nhất định.
Sử dụng biến Bash
Để dùng biến, thêm $ (dollar) trước tên. Ví dụ:
#!/bin/bash MY_STRING="Hello Linux!" MY_FILE_PATH=/path/to/my/file.txt MY_NUMBER=4 echo $MY_STRING # In biến string touch $MY_FILE_PATH # Tạo hoặc cập nhật file tại đường dẫn MY_NUMBER=$(($MY_NUMBER+1)) # Tăng MY_NUMBER bằng cách đánh giá công thức toán học
Lưu ý dùng lệnh touch tạo/cập nhật file trong script.
Lưu ý dùng double brackets (()) – báo Bash đánh giá biểu thức bên trong – không thì MY_NUMBER nhận giá trị string chứa ký tự “$MY NUMBER+1”.
Dùng biến trong chuỗi
Đôi khi cần giá trị biến trong chuỗi – ví dụ thu thập đường dẫn file từ input user.
Để nhúng biến vào chuỗi, dùng trực tiếp trong ngoặc kép của chuỗi khác:
echo "Day la chuoi cua toi: $MY_STRING"
Biến cục bộ (Local Variables)
Local biến chỉ khả dụng trong scope tạo ra, tức bên trong function hoặc loop cụ thể định nghĩa.
#!/bin/bash function myFunction { local MY_STRING="Chuoi nay chi co o day, trong ham nay" echo $MY_STRING } echo $MY_STRING # In ra rỗng, vì biến định nghĩa local trong function