Vui lòng xem tại http://www.tldp.org/LDP/abs/html/parameter-substlation.html để biết ví dụ
${parameter-default}, ${parameter:-default}
Nếu tham số không được đặt, sử dụng mặc định. Sau cuộc gọi, tham số vẫn không được đặt.
Cả hai hình thức gần như tương đương. Phần bổ sung chỉ :
tạo sự khác biệt khi tham số đã được khai báo, nhưng là null.
unset EGGS
echo 1 ${EGGS-spam} # 1 spam
echo 2 ${EGGS:-spam} # 2 spam
EGGS=
echo 3 ${EGGS-spam} # 3
echo 4 ${EGGS:-spam} # 4 spam
EGGS=cheese
echo 5 ${EGGS-spam} # 5 cheese
echo 6 ${EGGS:-spam} # 6 cheese
${parameter=default}, ${parameter:=default}
Nếu tham số không được đặt, đặt giá trị tham số thành mặc định.
Cả hai hình thức gần như tương đương. The: chỉ tạo sự khác biệt khi tham số đã được khai báo và là null
# sets variable without needing to reassign
# colons suppress attempting to run the string
unset EGGS
: ${EGGS=spam}
echo 1 $EGGS # 1 spam
unset EGGS
: ${EGGS:=spam}
echo 2 $EGGS # 2 spam
EGGS=
: ${EGGS=spam}
echo 3 $EGGS # 3 (set, but blank -> leaves alone)
EGGS=
: ${EGGS:=spam}
echo 4 $EGGS # 4 spam
EGGS=cheese
: ${EGGS:=spam}
echo 5 $EGGS # 5 cheese
EGGS=cheese
: ${EGGS=spam}
echo 6 $EGGS # 6 cheese
${parameter+alt_value}, ${parameter:+alt_value}
Nếu tham số được đặt, sử dụng alt_value, khác sử dụng chuỗi null. Sau cuộc gọi, giá trị tham số không thay đổi.
Cả hai hình thức gần như tương đương. The: chỉ tạo sự khác biệt khi tham số đã được khai báo và là null
unset EGGS
echo 1 ${EGGS+spam} # 1
echo 2 ${EGGS:+spam} # 2
EGGS=
echo 3 ${EGGS+spam} # 3 spam
echo 4 ${EGGS:+spam} # 4
EGGS=cheese
echo 5 ${EGGS+spam} # 5 spam
echo 6 ${EGGS:+spam} # 6 spam