特殊shell扩展变量

  • 这四个扩展变量(+,-,=,?),都属于对变量的值进行判断、处理
如果parameter变量值为空,返回word字符串,赋值给result变量

result=${parameter:-word}

如果parameter变量值为空,则word替代变量值,且返回其值
result=${parameter:=word}

如果para变量为空,word当做stderr输出,否者输出变量值
用于设置变量为空导致错误时,返回的错误信息
${para:?word}

如果para变量为空,什么都不做,否则word返回给接受者
${para:+word}
  • 实际案例
[root@localhost cahnge_more_file]# res=${name1:-madaha}
[root@localhost cahnge_more_file]# echo $res
madaha

[root@localhost cahnge_more_file]# unset name1
[root@localhost cahnge_more_file]# echo $name1

[root@localhost cahnge_more_file]# res=${name1:=madaha}
[root@localhost cahnge_more_file]# echo $res
madaha
[root@localhost cahnge_more_file]# echo $name1
madaha

[root@localhost cahnge_more_file]# unset name1
[root@localhost cahnge_more_file]# ${name1:?}
-bash: name1: 参数为空或未设置
[root@localhost cahnge_more_file]# ${name1:?未设置参数啊啊啊啊啊}
-bash: name1: 未设置参数啊啊啊啊啊

[root@localhost cahnge_more_file]# unset res
[root@localhost cahnge_more_file]# echo $res

[root@localhost cahnge_more_file]# res=${name:+madaha}
[root@localhost cahnge_more_file]# echo $res
madaha

# 删除指定目录下面某个时间一下的文件
path=/data/mysql/logs
find ${path:=/data/mysql/logs} -name *.tar.gz* -type f -mtime +7 |  xargs rm -f
posted @ 2022-05-07 10:13  savagee  阅读(46)  评论(0)    收藏  举报