linux变量校验、默认值、覆盖值的用法
文章目录
一、前言
在 bash 的脚本中,经常会用到变量的判断和替换等操作,每次都是用到的时候才进行百度,用完之后就忘了。。。
这次正好有时间,总结用法
二、变量默认值(原变量值未修改)
格式:${vari:-defaultValue}
当var没有定义时,此时使用defaultValue, 而vari依然为空,没有改变值
2.1、测试脚本
# 创建测试脚本
$ cat > test.sh <<EOF
#!/bin/bash
echo \${name:-'张三'}
echo \${name}
EOF
# 脚本添加执行权限
$ chmod u+x test.sh
# 执行脚本,发现 name 变量的值还是为空,并为发生变化
$ sh test.sh
张三
三、变量默认值(变量重新赋值)
格式:${vari:=defaultValue}
当vari没有定义时,此时使用defaultValue, 同时vari也被赋值为defaultValue
3.1、测试脚本
# 创建测试脚本
$ cat > test.sh <<EOF
#!/bin/bash
echo \${name:='张三'}
echo \${name}
EOF
# 脚本添加执行权限
$ chmod u+x test.sh
# 执行脚本,发现 name 变量的值已经重新赋值
$ sh test.sh
张三
张三
四、变量值校验
格式:${vari:?value}
格式:${vari:?}
当vari没有定义时,或者定义了值为空,将在终端报错并且退出,用于检查是否定义以及是否为空
4.1、测试脚本
# 创建测试脚本
$ cat > test.sh <<EOF
#!/bin/bash
echo \${name:?'张三'}
echo \${name}
EOF
# 脚本添加执行权限
$ chmod u+x test.sh
# 执行脚本,发现已报错
$ sh test.sh
test.sh: line 2: name: 张三
五、变量不为空则替换(原变量值未修改)
格式:${vari:+value}
当vari定义并且不为空,将用value替换vari的值,否则什么也不做, 与${vari:-value}相反
5.1、测试脚本
# 创建测试脚本
$ cat > test.sh <<EOF
#!/bin/bash
name=lisi
echo \${name:+'张三'}
echo \${name}
EOF
# 脚本添加执行权限
$ chmod u+x test.sh
# 执行脚本,发现 name 变量的值已经重新赋值
$ sh test.sh
张三
lisi