2011-11-09 11 views
6

Sto guardando attraverso il codice di qualcun altro e non sono sicuro di cosa significhi. O è una chiamata variabile VARIABLE+set che è uno strano nome di variabile dal momento che è ha un +, o si viene valutata ed è difficile da Google perché ha $ {} in esso;)

+0

Questa notazione è spesso utilizzata negli script di configurazione generati da GNU Autoconf. – anol

risposta

7

C'è voluto ancora del tempo, ma io trovato un link spiegando cosa fa. È una forma di sostituzione di parametro bash che verrà valutata a "set" se $VARIABLE è stato impostato e null in caso contrario. Questo consente di controllare se una variabile è impostata nel modo seguente:

if [ -z "${VARIABLE+set}" ] ; then 
    echo "VARIABLE is not set" 
fi 

E 'anche interessante notare che ${VARIABLE+set} può benissimo essere ${VARIABLE+anything}. L'unica ragione per usare + set è perché è leggermente più autodocumentante (anche se non abbastanza da impedirmi di fare questa domanda).

+0

BTW, questa non è solo una caratteristica bash, è parte dello standard POSIX per i linguaggi di comando della shell: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 –

+0

E disponibile praticamente dal inizio di shell unix, ovvero Bourne Shell. – shellter