5.6 Tham biến và các biến số. Môi trường của hệ vỏ
109
tham biến vị trí 0). Giá trị của tham biến vị trí là các tham số cho lệnh, được đưa
ra khi chạy hệ vỏ (tham số đầu tiên là giá trị của tham biến 1, tham số thứ hai -
tham biến 2, v.v. . . ). Có thể dùng câu lệnh set để thay đổi giá trị của tham biến
vị trí. Giá trị của các tham biến này cũng thay đổi trong khi hệ vỏ thực hiện một
trong các hàm số (chúng ta sẽ xem xét vấn đề này ở dưới). Các tham biến đặc biệt
không gì khác hơn là các mẫu, mà sự thay thế (phép thế, phép hoán đổi) chúng
được thực hiện như trong bảng
Bảng 5.2: Thay thế các tham biến đặc biệt
Tham biến
Quy luật thay thế
*
Thay thế bởi các tham biến vị trí, bắt đầu từ tham biến thứ nhất. Nếu sự
thay thế thực hiện trong dấu ngoặc kép, thì tham biến này sẽ được thay
bởi một từ duy nhất, mà tạo ra từ tất cả các tham biến vị trí, phân cách
nhau bởi ký tự đầu tiên của biến số IFS (sẽ nói đến ở sau). Tức là “$”
tương đương với “$1c$2c. . . ”, trong đó c - ký tự đầu tiên trong giá trị
của biến số IFS. Nếu giá trị của IFS trống, hoặc không được xác định
giá trị, thì tham biến phân cách nhau bởi các khoảng trắng.
@
Thay thế bởi tham biến vị trí, bắt đầu từ tham biến thứ nhất. Nếu thay thế
thực hiện trong ngoặc kép, thì mỗi tham biến sẽ được thay thế bởi một
từ riêng biệt. Tức là, “$@” tương đương với “$1” “$2” . . . Nếu không có
tham biến vị trí, thì giá trị sẽ không được thiết lập (tham biến sẽ bị x
#
Thay thế bởi giá trị thập phân của các tham biến vị trí.
?
Thay thế bởi trạng thái thoát ra của câu lệnh cuối cùng trong đường ống,
mà được thực hiện trong chế độ nền trước.
- (gạch ngang)
Thay thế bởi giá trị các cờ, flag, được đặt bởi lệnh nội trú set hay trong
khi chạy hệ vỏ.
$
Thay thế bởi số của tiến trình (PID - process identificator)
Thay thế bởi số của tiến trình (PID) cuối cùng trong số các câu lệnh
thực hiện trong nền sau.
0
Thay thế bởi tên hệ vỏ hay tên của script đang chạy. Nếu bash chạy một
tập tin lệnh nào đó, thì $0 có giá trị bằng tên của tập tin này. Trong
trường hợp ngược lại giá trị này bằng đường dẫn đầu đủ đến hệ vỏ (ví
dụ, /bin/bash
_ (gạch dưới)
Thay thế bởi tham số cuối cùng của câu lệnh trước trong số các câu lệnh
đã được thực hiện (nếu đó lại là một tham biến hay biến số, thì sẽ sử
dụng giá trị của n
Các tham biến đặc biệt, được liệt kê ở bảng trên, có một điểm khác biệt đó là
chỉ có thể “nhắc” đến chúng, không thể gán các giá trị cho các tham biến này.
Biến môi trường, nhìn từ phía hệ vỏ, đó là các tham biến được đặt tên. Giá trị
của biến môi trường được gán nhờ thao tác có dạng sau:
[user]$ name=value
Trong đó, name - tên của biến, còn value - giá trị muốn gán cho biến (có thể
là một dòng trống). Tên của biến môi trường chỉ có thể bao gồm các chữ số, chữ
cái và không được bắt đầu bởi một chữ số. (Tin rằng sau khi đọc đoạn viết về