"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##*.}

する?誰かがこれを説明できますか? Googleは難しいです:D

ベストアンサー1

これはシェルのパラメータ拡張です。たとえば、

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

おすすめ記事