Một biến là một chuỗi ký tự để từ đó chúng ta gán một giá trị. Giá trị được gán có thể là một số, văn bản, tên file, thiết bị hoặc bất kỳ kiểu nào khác của dữ liệu.
Một biến là không gì khác ngoài một con trỏ trỏ tới dữ liệu thực. Shell cho phép bạn tạo, gán, và xóa các biến.
Các tên biến trong Unix/Linux
Tên của một biến có thể chỉ chứa các ký tự (a tới z hoặc từ A tới Z), các số (từ 0 tới 9), hoặc ký hiệu gạch dưới ( _).
Theo quy ước, các biến Unix shell sẽ có tên của chúng trong chữ in hoa.
Ví dụ dưới đây về một tên biến hợp lệ.
_ALI TOKEN_A VAR_1 VAR_2
Sau đây là ví dụ về các tên biến không hợp lệ:
2_VAR -VARIABLE VAR1-VAR2 VAR_A!
Lý do là bạn không thể sử dụng các ký tự khác như !, *, hoặc - , bởi vì các ký tự này có ý nghĩa đặc biệt đối với shell.
Định nghĩa các biến trong Unix/Linux
Các biến được định nghĩa như sau:
variable_name=variable_value
Ví dụ:
NAME="Zara Ali"
Ví dụ trên định nghĩa biến Name và gán giá trị Zara Ali cho nó. Các biến theo kiểu này được gọi là các biến vô hướng (scala). Một biến vô hướng chỉ có thể giữ một giá trị tại một thời điểm.
Shell cho phép bạn giữ bất kỳ giá trị nào bạn muốn trong một biến. Ví dụ:
VAR1="Zara Ali" VAR2=100
Truy cập các giá trị trong Unix/Linux
Để truy cập các giá trị được giữ trong một biến, đặt trước tên biến đó với ký hiệu ( $):
Ví dụ, script sau sẽ truy cập vào giá trị của biến NAME đã được định nghĩa và sẽ in nó trên STDOUT:
#!/bin/sh NAME="Zara Ali" echo $NAME
Nó sẽ tạo ra kết quả sau:
Zara Ali
Các biến chỉ đọc (read-only) trong Unix/Linux
Shell cung cấp một cách để đánh dấu các biến như read-only bằng cách sử dụng lệnh readonly. Sau khi một biến được đánh dấu read-only, giá trị của nó không thể thay đổi.
Ví dụ, script sau sẽ lỗi trong khi cố gắng thay đổi giá trị của biến NAME.
#!/bin/sh NAME="Zara Ali" readonly NAME NAME="Qadiri"
Nó sẽ tạo kết quả sau:
/bin/sh: NAME: This variable is read only.
Xóa một biến trong Unix/Linux
Xóa một biến nói cho shell để gỡ bỏ biến đó từ danh sách các biến mà nó theo dõi. Một khi bạn xóa một biến, bạn sẽ không thể truy cập vào giá trị lưu giữ trong biến đó.
Dưới đây là cú pháp để xóa một biến được định nghĩa bằng cách sử dụng lệnh unset:
unset variable_name
Lệnh trên sẽ xóa giá trị của một biến được định nghĩa. Dưới đây là một ví dụ đơn giản:
#!/bin/sh NAME="Zara Ali" unset NAME echo $NAME
Lệnh trên sẽ không in bất cứ thứ gì. Bạn không thể sử dụng lệnh unset để xóa các biến mà được đánh dấu read-only.
Các kiểu biến trong Unix/Linux
Khi một Shell đang chạy, có 3 kiểu biến tồn tại:
- Các biến nội bộ (Local Variables): Một biến nội bộ là một biến mà tồn tại trong trong quá trình thực thi của shell. Nó không có sẵn trong các chương trình mà được bắt đầu bởi Shell. Chúng được thiết lập tại dòng nhắc lệnh.
- Các biến môi trường (Environment Variables): Một biến môi trường là một biến có sẵn trong bất kỳ tiến trình con nào của shell. Một vài chương trình cần các biến môi trường để thực thi các hàm một cách chính xác. Thông thường một Shell script chỉ định nghĩa các biến môi trường mà nó cần bởi các chương trình khi nó chạy.
- Các biến shell (Shell Variables): Một biến shell là một biến đặc biệt mà được thiết lập bởi Shell và được yêu cầu bởi Shell để thực thi các hàm một cách chính xác. Một số biến này là biến môi trường, trong khi số khác là biến nội bộ.