Chinaunix

标题: 请教下这句shell什么意思 ? [打印本页]

作者: ruifeng_    时间: 2013-08-22 11:53
标题: 请教下这句shell什么意思 ?
echo $((${a//.*/+1}))     

看不懂是啥意思,请教下
作者: 关阴月飞    时间: 2013-08-22 12:52
本帖最后由 关阴月飞 于 2013-08-22 12:54 编辑

回复 1# ruifeng_


   
echo $((  ${a//.*/+1}  ))   

$(( ))  ==》 运算
${a//.*/+1}   ==》 ${var//Pattern/Replacement} ==> 全局替换. 所有在变量var 匹配Pattern的字符串, 都会被替换为Replacement .

这里的作用是,把a变量中 "." 字符及后面的所有字符串 替换成 +1
例如:
  1. [root@ ~]# a=1.23456
  2. [root@ ~]# echo ${a//.*/+1}
  3. 1+1
  4. [root@ ~]# a=a.adsfsdlkfe
  5. [root@ ~]# echo ${a//.*/+1}
  6. a+1
复制代码
目测这个作用是把小数转换成整数:
  1. [root@ ~]# a=1.2
  2. [root@ ~]# echo $((${a//.*/+1}))
  3. 2
  4. [root@ ~]# a=1.093028427394
  5. [root@ ~]# echo $((${a//.*/+1}))
  6. 2
  7. [root@ ~]# a=99.093028427394   
  8. [root@ ~]# echo $((${a//.*/+1}))
  9. 100
复制代码

作者: Shell_HAT    时间: 2013-08-22 12:54
http://bbs.chinaunix.net/viewthr ... p;page=7#pid1617953
[root@ ~]# a=1.txt

[root@ ~]# echo $((${a//.*/+1}))
2

[root@ ~]# a=2.txt

[root@ ~]# echo $((${a//.*/+1}))
3


作者: seesea2517    时间: 2013-08-22 13:15
回复 3# Shell_HAT


    原来是这个用途。
作者: 刺客阿地    时间: 2013-08-22 13:44
长见识了,看来得学好基础才能看懂!
作者: ruifeng_    时间: 2013-08-22 14:16
明白了, 非常感谢楼上两位的指点。
作者: zhaopingzi    时间: 2013-08-22 14:25
写shell或者程序,后面加个注释,在软件质量方面来说是加分的
作者: rdcwayx    时间: 2013-08-22 14:45
Shell的这个处理确实比较隐晦,但是却又是非常有用的,楼主看一遍我给的那个链接吧。

我們也可以對變量值裡的字串作替換:
${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt

http://bbs.chinaunix.net/forum.p ... p;page=7#pid1617953
作者: ruifeng_    时间: 2013-08-22 14:55
回复 8# rdcwayx


    多谢, 多谢
作者: reyleon    时间: 2013-08-22 23:28
学习了 都是大牛




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2