${变量:=默认值}是什么意思?

简介: 当待测的变量不存在或者为空时,将直接把待测变量设置为默认值(赋值),如果待测变量存在,则直接传变量值。

语法:

${待测变量:=默认值}

当待测的变量不存在或者为空时,将直接把待测变量设置为默认值(赋值),如果待测变量存在,则直接传变量值。

这个写法与前面说到的${待测变量:-默认值}是有区别的,前面的只是在待测的变量不存在或者为空时临时返回默认值,并不是对变量赋值。${待测变量:=默认值}这种写法是待测的变量不存在或者为空时,给待测变量赋值为默认值。

实例:

### 变量存在时:
[root@www.lutixia.cn ~]# name=lutixia
[root@www.lutixia.cn ~]# echo ${name:='运维朱工'}
lutixia

因为变量name存在值,所以直接放回变量值。

### 变量不存在时:
[root@www.lutixia.cn ~]# echo $username

[root@www.lutixia.cn ~]# echo ${username:='运维朱工'}
运维朱工
# 再次查看username变量值,已经被赋值了。
[root@www.lutixia.cn ~]# echo $username
运维朱工

因为username变量,没有定义过,所以返回默认值,并且username被赋值。

如果是使用${待测变量:-默认值},那么username变量依然为空:

# 未给username变量赋值:
[root@www.lutixia.cn ~]# echo $username

[root@www.lutixia.cn ~]# echo ${username:-"运维朱工"}
运维朱工

# 再次查看username变量,值为空
[root@www.lutixia.cn ~]# echo $username

相关文章
初识go变量,使用var和:=来声明变量,声明变量的三种方式
这篇文章介绍了Go语言中使用`var`和`:=`声明变量的三种不同方式,包括声明单个或多个变量、通过值确定数据类型以及在函数体内使用`:=`声明局部变量。
初识go变量,使用var和:=来声明变量,声明变量的三种方式
|
2月前
|
安全 Go C语言
Go常量的定义和使用const,const特性“隐式重复前一个表达式”,以及iota枚举常量的使用
这篇文章介绍了Go语言中使用`const`定义常量的方法,包括常量的特性“隐式重复前一个表达式”,以及如何使用`iota`实现枚举常量的功能。
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
|
5月前
|
Go
go常量显示定义、隐式定义、iota
go常量显示定义、隐式定义、iota
|
6月前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
63 0
|
SQL 分布式计算 DataWorks
使用`SET`语句来定义变量并为其赋值
使用`SET`语句来定义变量并为其赋值
231 4
|
SQL 分布式计算 DataWorks
可以使用SET语句来定义变量并为其赋值
可以使用SET语句来定义变量并为其赋值
64 2
|
编译器 程序员 Go
Go指针VS值的方法规则
Go指针VS值的方法规则
|
Shell Linux
10.2.2 变量的取用与设置:echo, 变量设置规则, unset
10.2.2 变量的取用与设置:echo, 变量设置规则, unset
105 0
【C++】 --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
【C++】 --- 如果同时定义了两个函数,一个带const,一个不带,会有问题吗?
136 0