求解一shell语句
${var%${var#?}} 这段语句可以显示var变量的第一个字符,也就是说var=hello的话,这个语句就是h
但是我不明白为什么,求详解
[解决办法]
不理解就把它拆开来理解啊:
${string#substring}
从变量$string的开头, 删除最短匹配$substring的子串
${string##substring}
从变量$string的开头, 删除最长匹配$substring的子串
${string%substring}
从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}
从变量$string的结尾, 删除最长匹配$substring的子串
[root@RHEL6A ~]# var=hello[root@RHEL6A ~]# echo $varhello从变量var的开头删除最短匹配?的字符串,这里的?应该是代表一个任意字符吧[root@RHEL6A ~]# echo ${var#?}ello这里是语句嵌套,可能用下面的方式看得更明白一点[root@RHEL6A ~]# echo ${var%${var#?}}h[root@RHEL6A ~]# var2=${var#?}[root@RHEL6A ~]# echo $var2ello从变量var的结尾删除最短匹配变量var2的字符串,这里的var2=ello,var=hello,所以剩下h,应该是这么理解吧[root@RHEL6A ~]# echo ${var%$var2}h