114
Bash
Tức là với mỗi cặp dấu ngoặc sẽ tạo ra vài dòng riêng rẽ (số những dòng
này bằng số từ nằng trong dấu ngoặc) bằng cách ghi thêm vào trước mỗi từ trong
ngoặc những gì đứng trước dấu ngoặc, và ghi thêm vào sau mỗi từ này những
gì đứng sau dấu ngoặc. Một ví dụ khác: dòng a{d,c,b}e khi khai triển sẽ thu
được ba từ “ade ace abe”. Khai triển dấu ngoặc được thực hiện trước các dạng
khai triển khác trong dòng lệnh, hơn nữa tất cả các ký tự đặc biệt có trong dòng
lệnh, kể cả những ký tự nằm trong dấu ngoặc, sẽ được giữ không thay đổi (chúng
sẽ được biên dịch ở các bước phía sau).
5.7.2
Thay thế dấu ngã (Tilde Expansion)
Nếu như từ bắt đầu với ký tự dấu ngã (’∼’), tất cả các ký tự đứng trước dấu gạch
chéo đầu tiên (hay tất cả các ký tự nếu như không có dấu gạch chéo) sẽ được hiểu
là tên người dùng (login name). Nếu như tên này là một dòng rỗng (tức là dấu
gạch chéo đứng ngay phía sau dấu ngã), thì dấu ngã sẽ được thay thế bởi giá trị
của biến HOME. Và nếu giá trị của biến HOME không được gán thì dấu ngã sẽ được
thay thế bởi đường dẫn đầu đủ đến thư mục cá nhân của người dùng, mà đã chạy
hệ vỏ. Nếu như ngay sau dấu ngã (và trước dấu gạch chéo) là một từ trùng với
tên của một người dùng hợp pháp, thì dấu ngã cộng với tên người dùng được thay
thế bởi đường dẫn đầy đủ đến thư mục cá nhân của người dùng này. Nếu như từ
đứng sau dấu ngã không phải là tên của một người dùng (và không rỗng), thì từ
không bị thay đổi. Nếu như sau dấu ngã là ‘+’, hay ký hiệu này sẽ được thay thế
bởi tên đầu đủ của thư mục hiện thời (tức là giá trị của biến PWD). Nếu dứng sau
dấu ngã là ‘-’, thì thay thế giá trị của biến OLDPWD (thư mục “cũ”).
5.7.3
Phép thế các tham biến và biến số
Ký tự $ được sử dụng cho các thao tác thế tham biến, thế các câu lệnh và thế
các biểu thức số học. Biểu thức hay tên đứng sau $ có thể được đưa vào ngoặc,
không nhất thiết, nhưng rất tiện, vì dấu ngoặc phân cách biểu thức với các từ
hay ký tự đứng sau. Như vậy, để gọi giá trị của tham biến nói chung cũng như
biến môi trường nói riêng trong dòng lệnh, cần đặt biểu thức dạng $parameter.
Dấu ngoặc chỉ cần thiết, nếu tên của tham biến có chứa vài chữ số, hoặc khi theo
sau tên còn có các ký tự khác, mà chúng ta không muốn hệ vỏ “hiểu lầm” chúng
là một phần của tên tham biến. Trong tất cả các giá trị của biến số xảy ra phép
thế dấu ngã (∼), sự khai triển tham biến và biến số, phép thế các câu lệnh, phép
thế các biểu thức số học, cũng như xóa các ký tự trích dẫn (xem dưới). Sự phân
chia từ không xảy ra, trừ trường hợp “$” (lời giải thích xem ở bảng số 3). Sự khai
triển các mẫu tên tập tin và thư mục cũng không được thực hiện.
5.7.4
Phép thế các câu lệnh
Phép thế các câu lệnh là một công cụ rất mạng của bash. Ý nghĩa của nó nằm
ở chỗ thay thế tên các câu lệnh bởi kết quả thực hiện của chúng. Có hai dạng
phép thế lệnh: $(command) và ‘command‘ Nếu ứng dụng dạng thứ hai (chú ý
ở đây sử dụng dấu “ngoặc đơn ngược”, phím cho nó thường nằm trên phím Tab),
thì dấu gạch ngược (\) ở trong dấu ngoặc sẽ có chức năng như một ký tự thông