引入 如果我们直接输出一个未定义变量的值,则什么都不会显示,因为该变量一开始就未定义。如例:
# 变量 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 赋值 |
否 | 是 |
是否可对脚本中的位置参数 1 、2 等进行设置 |
可以 | 不可以 |
当变量存在值时是否修改原值 | 不修改 | 不修改 |
示例
注:测试时注意用unset
命令先删除掉变量,避免失误。
{var:-default}
当变量
var
不存在时,返回默认值。文章图片
当变量
var
值为空字符串时,返回默认值。文章图片
当赋予默认值后,
var
变量没有值。文章图片
当变量
var
存在非空值时,不会修改原值。文章图片
可以对脚本中的位置参数
1
、2
等进行设置默认值。#!/bin/bashfunction fun() {
local error=${1:-"undefined error"}
echo "$0 : $LINE $error"
}fun "File not found"
fun
文章图片
注:当变量存在值时不会修改原值,并且msg
和res
结果都会是原值。
{var:=default}
当变量
var
不存在时,返回默认值。文章图片
当变量
var
为空字符串时,返回默认值。文章图片
当赋予默认值后,
var
变量也会被赋予默认值。文章图片
当变量
var
存在非空值时,不会修改原值。文章图片
不可以对脚本中的位置参数
1
、2
等进行设置默认值。#!/bin/bashfunction fun() {
local error=${1:="undefined error"}
echo "$0 : $LINE $error"
}fun "File not found"
fun
【#|Linux拓展之Shell默认变量值】
文章图片
推荐阅读
- #|Linux拓展之Shell变量扩展${}
- Linux 下的etc
- 计算机技术|Python开发之jupyter notebook使用详解
- 面试|Java:垃圾回收机制面试题整理
- linux|linux操作系统离线安装nginx及其依赖包
- devops|国内首届DataOps+MLOps meetup回顾
- BFE开源项目|为什么BFE可以取代Nginx
- Linux|Linux进程信号
- Linux|Linux进程信号——信号的产生