Việc mở rộng biến ${parameter:-word}
sẽ sử dụng giá trị $parameter
nếu nó được đặt và không null (không phải là một chuỗi rỗng), nếu không nó sẽ sử dụng chuỗi word
.
Bỏ qua :
sẽ không kiểm tra xem giá trị có trống không, chỉ khi nó không được đặt hay không.
Điều này có nghĩa là ${PS1-}
sẽ mở rộng thành giá trị $PS1
nếu nó được đặt, nhưng thành một chuỗi trống nếu nó trống hoặc không được đặt. Trong trường hợp này, điều này hoàn toàn giống như ${PS1:-}
chuỗi sau -
cũng trống.
Sự khác biệt giữa "${PS1-}"
và "$PS1"
là tinh tế, như @Rakesh Sharma lưu ý: cả hai sẽ mở rộng thành giá trị của $PS1
hoặc thành một chuỗi trống nếu nó không được đặt. Ngoại lệ là khi set -u
hoạt động, trong trường hợp mở rộng các biến không đặt sẽ gây ra lỗi . Giá trị mặc định (trống) được đặt theo "${PS1-}"
chu vi này, mở rộng một unset PS1
thành chuỗi trống mà không có lỗi.
Đây là cú pháp tiêu chuẩn ( bắt nguồn từ shell Bourne vào cuối những năm 70 ), cũng như một vài bản mở rộng tương tự khác.