“serial=${serial##*.}”有什么作用?

“serial=${serial##*.}”有什么作用?

可能的重复:
如何${0##/} 和 ${0%/} 工作?

0:root@SERVER:/ # 
0:root@SERVER:/ # serial=$(lscfg -vl hdisk1 | awk '/Serial Number/')
0:root@SERVER:/ # echo $serial                                      
Serial Number...............11BBGG11235
0:root@SERVER:/ #             
0:root@SERVER:/ # 
0:root@SERVER:/ # serial=${serial##*.}                              
0:root@SERVER:/ # echo $serial                                      
11BBGG11235
0:root@SERVER:/ # 

精确度 是什么意思

serial=${serial##*.}

做?有人可以解释一下吗?很难用谷歌搜索它:D

答案1

它是 shell 中的参数扩展。例如:

Serial=${serial##*.} -- 这将获取最后一个由“.”分隔的字段中的值分隔符。抓住最后一个“.”值并打印其余数据。

parameter     result
-----------   ------------------------------
${NAME}       polish.ostrich.racing.champion
${NAME#*.}           ostrich.racing.champion
${NAME##*.}                         champion
${NAME%%.*}   polish
${NAME%.*}    polish.ostrich.racing



parameter     result
-----------   --------------------------------------------------------
${FILE}       /usr/share/java-1.4.2-sun/demo/applets/Clock/Clock.class
${FILE#*/}     usr/share/java-1.4.2-sun/demo/applets/Clock/Clock.class
${FILE##*/}                                                Clock.class
${FILE%%/*}
${FILE%/*}    /usr/share/java-1.4.2-sun/demo/applets/Clock

有关更多示例,请参见http://mywiki.wooledge.org/BashFAQ/073

相关内容