2013-05-08 14 views
28

Cosa significa un segno di percentuale in bash quando si manipolano le stringhe? Ad esempio, cosa significa ${0%/*}?Bash: manipolazione con stringhe (segno di percentuale)

+11

È possibile controllare in http://tldp.org/LDP/abs/html/refcards.html#AEN22664 – fedorqui

+1

nuovo collegamento a documenti "String" Operazioni: http://tldp.org/LDP/abs/html /refcards.html#AEN22828 –

risposta

27

Se si utilizza la risorsa di @ fedorqui, si vedrà che sta per eliminare la corrispondenza più breve di /* dalla fine del primo argomento posizionale. Un esempio:

example_foo(){ 
    echo ${1%/*} 
} 

example_foo path/to/directory/sub_directory 
# => path/to/directory 

Nell'esempio ho usato il secondo argomento posizionale in quanto il primo è il nome della funzione.

+1

Complimenti per mettere tutto insieme e dare un buon esempio. – fedorqui

+2

Per risolvere la domanda originale, '$ 0' è il percorso completo dello script in esecuzione; l'espressione data elimina il componente finale del percorso, quindi è approssimativamente equivalente a 'dirname $ 0'. – chepner

+0

A quanto ho capito, il '1' nell'esempio indica il secondo frammento del comando, contando da 0. –

Problemi correlati