Linux拓展之Shell默认变量值

引入

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

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

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



语法

为变量设置默认值有两种语法,如下:

# 语法一
echo ${变量名:-默认值}
# 示例一
echo ${var1:-"hello world"}

# 语法二
echo ${变量名:=默认值}
# 示例二
echo ${var2:="hello shell"}

在这里插入图片描述

这两种语法的区别如下:

  • ${变量名:-默认值} 不会将默认值赋给变量名所表示的变量。
  • echo ${变量名:=默认值} 会将默认值赋给变量名所表示的变量。

在这里插入图片描述



{var:-default}{var:=default} 的区别

关于两种语法的区别,如下:

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


示例

注:测试时注意用 unset 命令先删除掉变量,避免失误。

{var:-default}

当变量 var 不存在时,返回默认值。
在这里插入图片描述当变量 var 值为空字符串时,返回默认值。
在这里插入图片描述当赋予默认值后,var 变量没有值。
在这里插入图片描述当变量 var 存在非空值时,不会修改原值。
在这里插入图片描述可以对脚本中的位置参数 12 等进行设置默认值。

#!/bin/bash

function fun() {
    local error=${1:-"undefined error"}
    echo "$0 : $LINE $error"
}

fun "File not found"
fun

在这里插入图片描述

注:当变量存在值时不会修改原值,并且 msgres 结果都会是原值。

{var:=default}

当变量 var 不存在时,返回默认值。
在这里插入图片描述当变量 var 为空字符串时,返回默认值。
在这里插入图片描述当赋予默认值后,var 变量也会被赋予默认值。
在这里插入图片描述当变量 var 存在非空值时,不会修改原值。
在这里插入图片描述不可以对脚本中的位置参数 12 等进行设置默认值。

#!/bin/bash

function fun() {
    local error=${1:="undefined error"}
    echo "$0 : $LINE $error"
}

fun "File not found"
fun

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值