5.7 Khai triển biểu thức
113
ngôn ngữ, phân tích chủ ngữ, vị ngữ). Một trong những bước của sự phân tích
này là phép mở hay khai triển biểu thức (expansion). Trong bash có bảy loại
khai triển biểu thức:
Khai triển dấu ngoặc (brace expansion);
Thay thế dấu ngã (tilde expansion);
Phép thế các tham biến và biến số;
Phép thế các câu lệnh;
Phép thế số học (thực hiện từ trái sang phải);
Phép chia từ (word splitting);
Khai triển các mẫu tên tập tin và thư mục (pathname expansion).
Các thao tác này được thực hiện theo đúng thứ tự liệt kê trên. Chúng ta sẽ
xem xét chúng theo tứ tự này.
5.7.1
Khai triển dấu ngoặc
Khai triển dấu ngoặc tốt nhất minh họa trên ví dụ. Giả thiết, chúng ta cần tạo
thư mục con trong một thư mục nào đó, hoặc thay đổi người dùng sở hữu của vài
tập tin cùng một lúc. Có thể thực hiện điều này nhờ các câu lệnh sau:
[user]$ mkdir /usr/src/unikey/{old,new,dist,bugs}
[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}
Trong trường hợp đầu, trong thư mục /usr/src/unikey/ sẽ tạo ra các thư
mục con old,new,dist, và bugs. Trong trường hợp thứ hai, người dùng sở hữu
của các tập tin sau sẽ thay đổi (thành root):
/usr/ucb/ex
/usr/lib/ex?.?
/usr/ucb/edit
/usr/lib/ex?.?
/usr/ucb/ex
/usr/lib/how_ex
/usr/ucb/edit
/usr/lib/how_ex