前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >变量判断与设置

变量判断与设置

作者头像
我是李超人
发布2020-08-20 21:34:58
发布2020-08-20 21:34:58
98800
代码可运行
举报
运行总次数:0
代码可运行

声明:以下内容引用自鸟哥私房菜

-符号:

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# username=${username-root}
[root@localhost test]# echo $username
root
[root@localhost test]# username="ric"
[root@localhost test]# username=${username-peter}
[root@localhost test]# echo $username
ric

以上重点关注username=${username-root}这一行,这行中的-表示,当username变量不存在时,${username-root}返回的值是root,由于username不存在,所以最后username的值是root,在username=${username-peter}之前,我将username赋值为ric,由于username的值存在,所以最后username的值依然是ric。所以在${variable-str}中,-表示,当variable这个变量不存在时,整个表达式的值就是str,否则表达式的值是variable。注意,当变量variable是空字符串时依然表示变量是存在的。

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# username=""
[root@localhost test]# echo $username

[root@localhost test]# echo ${username-root}

上面由于我已经将username设置为空字符串,所以${username-root}的值为空字符串,如果想当username的值为空字符串时,结果依然是root,可以使用下面的方法。

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# echo ${username:-root}
root

/${variable:-str}在-符号前面加上:表示,当变量variable不存在或者为空字符串时,表达式的值是str,否则表达式的值是variable。

+符号:

+和-符号的作用是相反的,如下所示:

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# username="ric"
[root@localhost test]# echo ${username+root}
root
[root@localhost test]# unset username
[root@localhost test]# echo ${username+root}

当username存在时,值为root,当username不存在时,值为username。如果想让username为空字符串时值依然为username,可以在+前面加一个:号。

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# username=""
[root@localhost test]# echo ${username+root}
root
[root@localhost test]# echo ${username:+root}

=符号:

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# unset username
[root@localhost test]# echo ${username=root}
root
[root@localhost test]# echo $username
root
[root@localhost test]# username="ric"
[root@localhost test]# echo ${username=root}
ric
[root@localhost test]# echo $username
ric

/${variable=str}表示,当variable不存在时variable赋值为str,且表达式的值是variable,也就是str。当variable存在时,表达式的值是variable,variable的值不变。如果想让variable为空字符串时,variable被赋值为str,表达式的值为variable(也就是str)。可以在=前面加上:。

?符号:

如果我希望当变量不存在时,提示我变量不存在,并输出到stderr。可以这样实现。

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# unset username
[root@localhost test]# unset var
[root@localhost test]# var=${username?无此变量}
-bash: username: 无此变量
[root@localhost test]# username="ric"
[root@localhost test]# var=${username?无此变量}
[root@localhost test]# echo $var
Ric

var=${variable?expr}中?的作用表示,当variable不存在时将expr输出到stderr(错误提示)。当variable存在时${variable?expr}表达式的值是variable。如果想让当variable为空字符串时依然将expr输出到stderr,则可以在?前面加上:。

代码语言:javascript
代码运行次数:0
复制
[root@localhost test]# username=""
[root@localhost test]# var=${username:?无此变量}
-bash: username: 无此变量

总结

可以将-,+,=,?四个符号的作用总结成如下的表格:

变量设定方式

str没有设定

str为空字符串

str已设定为非空字符串

var=${str-expr}

var=expr

var=$str

var=$str

var=${str:-expr}

var=expr

var=expr

var=$str

var=${str+expr}

var=$str

var=expr

var=expr

var=${str:+expr}

var=$str

var=$str

var=expr

var=${str=expr}

str=expr var=expr

str 不变 var=

str 不变 var=$str

var=${str:=expr}

str=expr var=expr

str=expr var=expr

str 不变 var=$str

var=${str?expr}

expr 输出至 stderr

var=$str

var=$str

var=${str:?expr}

expr 输出至 stderr

expr 输出至 stderr

var=$str

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/02/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -符号:
  • +符号:
  • =符号:
  • ?符号:
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档