Dấu ngoặc nhọn

Ký tự '$' giới thiệu mở rộng tham số, thay thế lệnh hoặc mở rộng số học. Tên tham số hoặc ký hiệu được mở rộng có thể được đặt trong dấu ngoặc nhọn, là tùy chọn nhưng dùng để bảo vệ biến được mở rộng khỏi các ký tự ngay sau nó có thể được hiểu là một phần của tên

Khi sử dụng dấu ngoặc nhọn, dấu ngoặc nhọn kết thúc phù hợp là dấu '}' đầu tiên không được thoát bằng dấu gạch chéo ngược hoặc trong chuỗi được trích dẫn và không nằm trong mở rộng số học được nhúng, thay thế lệnh hoặc mở rộng tham số

Hình thức mở rộng tham số cơ bản là ${parameter}. Giá trị của tham số được thay thế. Tham số là tham số shell như được mô tả ở trên [xem Tham số Shell] hoặc tham chiếu mảng [xem Mảng]. Dấu ngoặc nhọn được yêu cầu khi tham số là tham số vị trí có nhiều hơn một chữ số hoặc khi tham số được theo sau bởi một ký tự không được hiểu là một phần của tên của nó

Nếu ký tự đầu tiên của tham số là dấu chấm than [. ] và tham số không phải là nameref, nó giới thiệu một mức độ gián tiếp. Bash sử dụng giá trị được hình thành bằng cách mở rộng phần còn lại của tham số làm tham số mới; . Điều này được gọi là

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
0. Giá trị có thể mở rộng dấu ngã, mở rộng tham số, thay thế lệnh và mở rộng số học. Nếu tham số là một tham chiếu tên, điều này sẽ mở rộng thành tên của biến được tham chiếu bởi tham số thay vì thực hiện mở rộng gián tiếp hoàn chỉnh. Các ngoại lệ cho điều này là các bản mở rộng của ${. tiền tố*} và ${. tên[@]} được mô tả bên dưới. Dấu chấm than phải ngay sau dấu ngoặc nhọn bên trái để giới thiệu hướng

Trong mỗi trường hợp bên dưới, từ có thể mở rộng dấu ngã, mở rộng tham số, thay thế lệnh và mở rộng số học

Khi không thực hiện mở rộng chuỗi con, sử dụng mẫu được mô tả bên dưới [e. g. , ‘. -’], Bash kiểm tra tham số không được đặt hoặc null. Việc bỏ qua dấu hai chấm chỉ dẫn đến thử nghiệm cho một tham số không được đặt. Nói cách khác, nếu bao gồm dấu hai chấm, toán tử sẽ kiểm tra sự tồn tại của cả hai tham số và giá trị của nó không phải là null;

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
1

Nếu tham số không được đặt hoặc null, phần mở rộng của từ được thay thế. Mặt khác, giá trị của tham số được thay thế

$ v=123
$ echo ${v-unset}
123

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
2

Nếu tham số không được đặt hoặc null, phần mở rộng của từ được gán cho tham số. Giá trị của tham số sau đó được thay thế. Các tham số vị trí và tham số đặc biệt có thể không được gán theo cách này

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
3

Nếu tham số là null hoặc không được đặt, thì phần mở rộng của từ [hoặc thông báo cho hiệu ứng đó nếu không có từ] được ghi vào lỗi tiêu chuẩn và trình bao, nếu nó không tương tác, sẽ thoát. Mặt khác, giá trị của tham số được thay thế

$ var=
$ : ${var:?var is unset or null}
bash: var: var is unset or null

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
4

Nếu tham số là null hoặc không được đặt, không có gì được thay thế, nếu không thì phần mở rộng của từ được thay thế

________số 8

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
5
$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
6

Điều này được gọi là mở rộng chuỗi con. Nó mở rộng tới các ký tự có độ dài tối đa của giá trị tham số bắt đầu từ ký tự được chỉ định bởi offset. Nếu tham số là '@' hoặc '*', một mảng được lập chỉ mục được đăng ký bởi '@' hoặc '*' hoặc một tên mảng kết hợp, thì kết quả sẽ khác như được mô tả bên dưới. Nếu độ dài bị bỏ qua, nó sẽ mở rộng thành chuỗi con của giá trị tham số bắt đầu từ ký tự được chỉ định bởi phần bù và mở rộng đến cuối giá trị. chiều dài và độ lệch là các biểu thức số học [xem Shell Arithmetic]

Nếu phần bù ước tính thành một số nhỏ hơn 0, thì giá trị được sử dụng làm phần bù trong các ký tự từ cuối giá trị của tham số. Nếu độ dài ước tính thành một số nhỏ hơn 0, thì nó được hiểu là phần bù bằng các ký tự từ cuối giá trị của tham số thay vì một số ký tự và phần mở rộng là các ký tự giữa phần bù và kết quả đó. Lưu ý rằng phần bù âm phải được phân tách khỏi dấu hai chấm ít nhất một dấu cách để tránh nhầm lẫn với dấu ‘. -' sự bành trướng

Dưới đây là một số ví dụ minh họa việc mở rộng chuỗi con trên tham số và mảng chỉ số

$ var=
$ : ${var:=DEFAULT}
$ echo $var
DEFAULT
1

Nếu tham số là '@' hoặc '*', thao tác lần lượt được áp dụng cho từng tham số vị trí và phần mở rộng là danh sách kết quả. Nếu tham số là một biến mảng được đăng ký bằng '@' hoặc '*', thì thao tác lần lượt được áp dụng cho từng phần tử của mảng và phần mở rộng là danh sách kết quả

Chủ Đề