一、参数变量
语法
${parameter}
- 和
$parameter
类似,即,变量参数的值,但$parameter
只能用于不那么模糊的场景。
二、 如果参数没有设置,则用默认字符串
语法
${parameter-default} 或者 ${parameter:default}
示例
root@FENG:/mnt/h/tmp/tmp# var1=abc root@FENG:/mnt/h/tmp/tmp# var2=ABC # 没有设置 var3 root@FENG:/mnt/h/tmp/tmp# echo ${var1-${var2}} abc root@FENG:/mnt/h/tmp/tmp# echo ${var3-${var2}} ABC root@FENG:/mnt/h/tmp/tmp# date Sun Aug 27 17:14:29 CST 2023
注意:${parameter-default}
和 ${parameter:-default}
绝大多数时候是可以替换了,除了一种情况:
root@FENG:/mnt/h/tmp/tmp# var3= root@FENG:/mnt/h/tmp/tmp# echo ${var3-0} root@FENG:/mnt/h/tmp/tmp# echo ${var3:-0} 0 root@FENG:/mnt/h/tmp/tmp#
- 可以看到var3声明了,但没有设置值的时候,
echo ${var3-0}
啥也不输出,echo ${var3:-0}
依然输出0。
三、如果参数没有设置,则设置为默认值
语法:
${parameter=default} 或者${parameter:=default}
示例
root@FENG:/mnt/h/tmp/tmp# echo ${var=abc} abc root@FENG:/mnt/h/tmp/tmp# echo ${var=xyz} abc # 因为 var 已经被设置为abc了,所以第二次执行时,var没有被改变。 root@FENG:/mnt/h/tmp/tmp# date Sun Aug 27 17:21:06 CST 2023
四、如果参数设置了,则设置为alt_value,否则设置为空字符串
语法:
${parameter+alt_value} 或者${parameter:+alt_value}
示例
root@FENG:/mnt/h/tmp/tmp# var=test root@FENG:/mnt/h/tmp/tmp# echo ${var+qijing} qijing root@FENG:/mnt/h/tmp/tmp# date
五、如果参数设置了,则打印err_msg,并且退出脚本。
语法:
${parameter?err_msg} 或者 ${parameter:?err_msg}
示例:
root@FENG:/mnt/h/tmp/tmp# unset var root@FENG:/mnt/h/tmp/tmp# echo ${var?abort} -bash: var: abort root@FENG:/mnt/h/tmp/tmp# date Sun Aug 27 17:30:02 CST 2023