日期:2014-05-16  浏览次数:20729 次

求解一shell语句
${var%${var#?}} 这段语句可以显示var变量的第一个字符,也就是说var=hello的话,这个语句就是h

但是我不明白为什么,求详解

------解决方案--------------------
不理解就把它拆开来理解啊:

${string#substring}
从变量$string的开头, 删除最短匹配$substring的子串 
${string##substring}
从变量$string的开头, 删除最长匹配$substring的子串 
${string%substring}
从变量$string的结尾, 删除最短匹配$substring的子串 
${string%%substring}
从变量$string的结尾, 删除最长匹配$substring的子串

Assembly code

[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