#|Linux拓展之Shell默认变量值

引入 如果我们直接输出一个未定义变量的值,则什么都不会显示,因为该变量一开始就未定义。如例:

# 变量 msg 未定义,使用 echo 语句进行输出变量值 echo $msg

#|Linux拓展之Shell默认变量值
文章图片

所以我们可以为变量定义一个默认值,即使它未定义也会有一个默认值,在脚本使用过程中也不会报错。


语法 为变量设置默认值有两种语法,如下:
# 语法一 echo ${变量名:-默认值} # 示例一 echo ${var1:-"hello world"}# 语法二 echo ${变量名:=默认值} # 示例二 echo ${var2:="hello shell"}

#|Linux拓展之Shell默认变量值
文章图片

这两种语法的区别如下:
  • ${变量名:-默认值} 不会将默认值赋给变量名所表示的变量。
  • echo ${变量名:=默认值} 会将默认值赋给变量名所表示的变量。
#|Linux拓展之Shell默认变量值
文章图片





{var:-default}{var:=default} 的区别 关于两种语法的区别,如下:
{var:-default} {var:=default}
当变量 var 不存在时 返回默认值 返回默认值
当变量 var 值为空字符串时 返回默认值 返回默认值
赋默认值后是否对变量 var 赋值
是否可对脚本中的位置参数 12 等进行设置 可以 不可以
当变量存在值时是否修改原值 不修改 不修改


示例
注:测试时注意用 unset 命令先删除掉变量,避免失误。
{var:-default}
当变量 var 不存在时,返回默认值。
#|Linux拓展之Shell默认变量值
文章图片
当变量 var 值为空字符串时,返回默认值。
#|Linux拓展之Shell默认变量值
文章图片
当赋予默认值后,var 变量没有值。
#|Linux拓展之Shell默认变量值
文章图片
当变量 var 存在非空值时,不会修改原值。
#|Linux拓展之Shell默认变量值
文章图片
可以对脚本中的位置参数 12 等进行设置默认值。
#!/bin/bashfunction fun() { local error=${1:-"undefined error"} echo "$0 : $LINE $error" }fun "File not found" fun

#|Linux拓展之Shell默认变量值
文章图片

注:当变量存在值时不会修改原值,并且 msgres 结果都会是原值。
{var:=default}
当变量 var 不存在时,返回默认值。
#|Linux拓展之Shell默认变量值
文章图片
当变量 var 为空字符串时,返回默认值。
#|Linux拓展之Shell默认变量值
文章图片
当赋予默认值后,var 变量也会被赋予默认值。
#|Linux拓展之Shell默认变量值
文章图片
当变量 var 存在非空值时,不会修改原值。
#|Linux拓展之Shell默认变量值
文章图片
不可以对脚本中的位置参数 12 等进行设置默认值。
#!/bin/bashfunction fun() { local error=${1:="undefined error"} echo "$0 : $LINE $error" }fun "File not found" fun

【#|Linux拓展之Shell默认变量值】#|Linux拓展之Shell默认变量值
文章图片

    推荐阅读