shell 括号总结[2]

时间 : 14-06-14 栏目 : Shell进阶 作者 : 老薛 评论 : 1 点击 : 1,012 次

5)POSIX标准的扩展计算:$((exp))
这种计算是符合C语言的运算符,也就是说只要符合C的运算符都可用在$((exp)),甚至是三
目运算符。注意:这种扩展计算是整数型的计算,不支持浮点型.若是逻辑判断,表达式exp
为真则为1,假则为0。

6)四种模式匹配替换结构:${var%pattern},${var%%pattern},${var#pattern},
${var##pattern}
第一种模式:${variable%pattern},这种模式时,shell在variable中查找,看它是否一
给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式
第二种模式: ${variable%%pattern},这种模式时,shell在variable中查找,看它是否
一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
第三种模式:${variable#pattern} 这种模式时,shell在variable中查找,看它是否一给
的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式
第四种模式: ${variable##pattern} 这种模式时,shell在variable中查找,看它是否一
给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
这四种模式中都不会改变variable的值,其中,只有在pattern中使用了*匹配符号时,%和%%,
#和##才有区别。结构中的pattern支持通配符,*表示零个或多个任意字符,?表示零个或一个
任意字符,[...]表示匹配中括号里面的字符,[!...]表示不匹配中括号里面的字符
[root@root shell]# var=testcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%s*e} 从最右边删除最短匹配
testca
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var%%s*e} 从最右边删除最长匹配
te
[root@root shell]# echo $var 变量没有改变
testcase
[root@root shell]# echo ${var#?e} 从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#*e} 从最左边删除最短匹配
stcase
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var##*e} 从最左边删除最长匹配,即删除所有
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var##*s} 从最左边删除最长匹配
e
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#test} 删除test
case
[root@root shell]# echo $var
testcase
[root@root shell]# echo ${var#tests} 没有匹配
testcase

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/shell/63.html

shell 括号总结[2]:目前有1 条留言

发表评论

8 + 1 = ?


博主微信号,很高兴为您提供帮助

随便看看

1