一、参数变量
语法
${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









网友评论