[Linuxtrent] Re: domanda per esperti di shell scripting

  • From: ianezz@xxxxxxxxxx
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Tue, 30 Apr 2002 13:13:08 +0200

Cristiano Tomasi, pigiando tasti a caso sul citofono, ha scritto:
 > 
 > Grazie lele
 > 
 > comunque il funzionamento l'ho capito dal tuo esempio perche'  quello che
 > c'è' scritto sopra (la man page della bash) deve essere un antico testo
 > mesopotamico tradotto prima in alamaico, poi greco ed in fine in italiano
 > :-). Saluti

Beh, di solito le manpage sono delle guide rapide di riferimento:
devono contenere tutta l'informazione e in maniera concisa...

In fin della fiera:


se 

    VARIABILE="/usr/local/bin"

allora

    ${VARIABILE#*/}  produce   ``usr/local/bin''

    ovvero toglie dall'inizio il match piu` corto.  Dato che il
    pattern e` ``*/'', in pratica toglie tutto fino alla prima barra
    obliqua (compresa)


    ${VARIABILE##*/}  produce   ``bin''

    ovvero toglie dall'inizio il match piu` lungo.  Dato che il
    pattern e` ``*/'', in pratica toglie tutto fino all'ultima barra
    obliqua (compresa)

    ${VARIABILE%/*}  produce   ``/usr/local''

    ovvero toglie dalla fine il match piu` corto.  Dato che il pattern
    e` ``/*'', in pratica toglie tutto a partire dall'ultima barra
    obliqua (compresa).


    ${VARIABILE%%/*}  produce   ``''

    ovvero toglie dalla fine il match piu` lungo.  Dato che il pattern
    e` ``/*'', in pratica toglie tutto a partire dalla prima barra
    obliqua (compresa). E visto che $VARIABILE comincia proprio con una
    barra obliqua, il risultato e` una stringa vuota.


In pratica, se VARIABILE contiene un path assoluto di un file,
${VARIABILE##*/} e` un modo veloce per ottenere il nome del file nudo
e crudo, e ${VARIABILE%/*} e` un modo veloce per ottenere la parte che
indica la directory. Ovvero:

    VARIABILE=/usr/local/bin
    echo "La directory e` ${VARIABILE%/*}"
    echo "Il file e` ${VARIABILE##*/}"
  
ed e` quasi equivalente al dire

    VARIABILE=/usr/local/bin
    
    echo "La directory e`  $(dirname "$VARIABILE")"
    echo "Il file e` $(basename "$VARIABILE")"

che e` piu` lento (perche` esegue i comandi comandi esterni
``basename'' e ``dirname''), ma che gestisce meglio alcuni casi
particolari.










${VARIABILE%%*/} ->  bin (toglie dall'inizio il match piu` corto



${<variable>%<pattern>} 






${<variable>%%<pattern>}    
${<variable>#<pattern>}    
${<variable>##<pattern>}    




-- 
 |   \    \  | ___|_  |_  | ianezz AT sodalia.it
 |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
_|_/  _\_|  _|____|___|___| http://www.linuxtrent.it
-- 
PROSSIMA ASSEMBLEA: lunedi 29 Aprile 2002 ore 20:45
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: