免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1836 | 回复: 0
打印 上一主题 下一主题

${str} 为not set, null, not null的一些理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-29 13:53 |只看该作者 |倒序浏览
shell十三问:
http://bbs.chinaunix.net/viewthread.php?tid=218853&extra=&page=5

测试环境:
OS:debian
shell:bash shell

一:var=${parameter:=word}
如果parameter是unset或者null,parameter就会被赋值为经过expansion处理后的word,var值为word。
如果不为not null,则就等于parameter.

  1. showvar(){
  2. var=${str:=expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

  1. 结果为:
  2. $var is expr #扩展
  3. $str is expr #扩展
  4. $var is expr #扩展
  5. $str is expr #扩展
  6. $var is 123456
  7. $str is 123456
复制代码


var=${parameter=word}
如果parameter是unset,则parameter值赋值为word,var值为word.
如果parameter是null,则parameter赋值为null,var值为null.
如果不为not null,则就等于parameter.

  1. showvar(){
  2. var=${str=expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

结果为:

  1. $var is expr
  2. $str is expr
  3. $var is
  4. $str is
  5. $var is 123456
  6. $str is 123456
复制代码


二:var=${parameter:-word}
如果parameter是unset或者null,扩展的结果就是经过expansion处理后的word,parameter值不变.
如果不为not null,则就等于parameter.

  1. showvar(){
  2. var=${str:-expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

结果为:

  1. $var is expr
  2. $str is
  3. $var is expr
  4. $str is
  5. $var is 123456
  6. $str is 123456
复制代码


var=${parameter-word}
如果parameter是unset,var值为word,parameter值为null.
如果parameter是null,var和parameter值为null.
如果not null,则就等于parameter.

  1. showvar(){
  2. var=${str-expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

结果为:

  1. $var is expr
  2. $str is
  3. $var is
  4. $str is
  5. $var is 123456
  6. $str is 123456
复制代码



三:var=${parameterword} #我这里测试出来是错误,大家测试结果如何

  1. showvar(){
  2. var=${str:?expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

  1. 结果为:
  2. ./showvar.sh: str: expr
复制代码


var=${parameter?word} #我这里测试出来是错误,大家测试结果如何

  1. showvar(){
  2. var=${str?expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

  1. 结果为:
  2. ./showvar.sh: str: expr
复制代码



四:var=${parameter:+word}
如果parameter是unset或者null,parameter和var结果为空。
如果parameter不为null的话,parameter不变,var的值为word.

  1. showvar(){
  2. var=${str:+expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

结果为:

  1. $var is  #null
  2. $str is
  3. $var is  #null
  4. $str is
  5. $var is expr #var=${parameter:+word}的值为word
  6. $str is 123456
复制代码


var=${parameter+word}如果parameter是unset,parameter和var结果为空.
如果parameter是null,var结果为word,parameter结果为null.
如果parameter不为空的话,parameter值为value,var的值为word.

  1. showvar(){
  2. var=${str+expr}
  3. echo \$var is $var
  4. echo \$str is $str
  5. }
  6. unset str
  7. showvar
  8. str= #the value is null
  9. showvar
  10. str=123456
  11. showvar
复制代码

结果为:

  1. $var is  
  2. $str is
  3. $var is  expr
  4. $str is
  5. $var is expr #var=${parameter:+word}的值为word
  6. $str is 123456
复制代码


有什么不对的地方,请大家帮忙指出。谢谢

[ 本帖最后由 ballball2 于 2007-1-29 15:41 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP