免费注册 查看新帖 |

Chinaunix

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

${name:-default} 和${name:=default} 的具体区别?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-11 17:26 |只看该作者 |倒序浏览
大家说!!!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-11-11 18:57 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

个人感觉差不多
${var:-word} //如果var被置位并且非空,则替换他的值,否则,替换成word
${var:=word} //如果var没被置位或者var为空,则把他置为word
如:
/home/lee#var=abc  
/home/lee#echo ${var:-123}
abc
/home/lee#var=  
/home/lee#echo ${var:-123}
123
/home/lee#var=abc
/home/lee#echo ${var:=123}
abc
/home/lee#var=
/home/lee#echo ${var:=123}
123

论坛徽章:
0
3 [报告]
发表于 2004-11-11 23:25 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

i think they are same same  from your example

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-11-11 23:42 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

跑完後, 再 echo $var 就知道差在哪了...
(誰來試一下啊?)

论坛徽章:
0
5 [报告]
发表于 2004-11-11 23:49 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

一个赋值给了VAR,一个没有,如果以后还调用到VAR,那效果就不同,如果不调用,就看不出差别

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-11-11 23:55 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

在网兄的shell十三问中有所提及~,而且讲的也非常详细

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-11-12 02:03 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

[quote]原帖由 "寂寞烈火"]在网兄的shell十三问中有所提及~,而且讲的也非常详细[/quote 发表:

慚愧... 寫得不是很好, 剛才針對這部份作了些修改, 希望讀起來更好理解:
http://bbs.chinaunix.net/forum/viewtopic.php?p=1617953#1617953

要不然, 參考這篇也很不錯:
http://bbs.chinaunix.net/forum/24/20040902/399487.html

论坛徽章:
0
8 [报告]
发表于 2004-11-12 09:05 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

我跑过了,也看出了差别:
当var=的时候 ,用 echo ${var:-123}不会改变$var的值;用echo ${var:=123}会改变$var的值。
跟大哥们一起真是长见识啊:)

论坛徽章:
0
9 [报告]
发表于 2004-11-12 09:06 |只看该作者

${name:-default} 和${name:=default} 的具体区别??

1.条件变量替换:
Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换
条件放在{}中.
(1) ${value:-word}
当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.
(2) ${value:=word}
与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将
word赋值给value
(3) ${valuemessage}
若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若
此替换出现在Shell程序中,那么该程序将终止运行)
(4) ${value:+word}
若变量以赋值的话,其值才用word替换,否则不进行任何替换
(5) ${valueffset}
${valueffset:length}
从变量中提取子串,这里offset和length可以是算术表达式.
(6) ${#value}
变量的字符个数 (变量的字符个数,并不是变量个数)
(7) ${value#pattern}
${value##pattern}
去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配
#与##的区别在于一个是最短匹配模式,一个是最长匹配模式.
( ${value%pattern}
${value%%pattern}
于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样
(9) ${value/pattern/string}
${value//pattern/string}
进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区
别与上同
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP