当前位置: 技术问答>linux和unix
求解一shell语句
来源: 互联网 发布时间:2017-01-25
本文导语: ${var%${var#?}} 这段语句可以显示var变量的第一个字符,也就是说var=hello的话,这个语句就是h 但是我不明白为什么,求详解 | 不理解就把它拆开来理解啊: ${string#substring} 从变量$str...
${var%${var#?}} 这段语句可以显示var变量的第一个字符,也就是说var=hello的话,这个语句就是h
但是我不明白为什么,求详解
但是我不明白为什么,求详解
|
不理解就把它拆开来理解啊:
${string#substring}
从变量$string的开头, 删除最短匹配$substring的子串
${string##substring}
从变量$string的开头, 删除最长匹配$substring的子串
${string%substring}
从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}
从变量$string的结尾, 删除最长匹配$substring的子串
${string#substring}
从变量$string的开头, 删除最短匹配$substring的子串
${string##substring}
从变量$string的开头, 删除最长匹配$substring的子串
${string%substring}
从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}
从变量$string的结尾, 删除最长匹配$substring的子串
[root@RHEL6A ~]# var=hello
[root@RHEL6A ~]# echo $var
hello
从变量var的开头删除最短匹配?的字符串,这里的?应该是代表一个任意字符吧
[root@RHEL6A ~]# echo ${var#?}
ello
这里是语句嵌套,可能用下面的方式看得更明白一点
[root@RHEL6A ~]# echo ${var%${var#?}}
h
[root@RHEL6A ~]# var2=${var#?}
[root@RHEL6A ~]# echo $var2
ello
从变量var的结尾删除最短匹配变量var2的字符串,这里的var2=ello,var=hello,所以剩下h,应该是这么理解吧
[root@RHEL6A ~]# echo ${var%$var2}
h