o que significa “serial = $ {serial ## *.}”? [duplicado]

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:/ # 

O que exaclty

serial=${serial##*.}

fazer? Alguém pode por favor explicar isso? É difícil pesquisar no Google: D

    
por LanceBaynes 04.01.2012 / 08:45

1 resposta

2

É uma expansão de parâmetro no shell. Por exemplo:

serial = $ {serial ## *.} - isso obterá o valor no último campo delimitado por '.' separador. Agarre o mais último '.' no valor e imprima o resto dos dados.

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

Para mais exemplos, veja o link

    
por 04.01.2012 / 09:34

Tags