2015-07-06 16 views
30

$(...) uguale a (...) in bash? Inoltre è $((...)) lo stesso di ((...))? Inoltre è ${...} lo stesso di {...}? Più in generale, cosa significa il simbolo del dollaro? Grazie.Doppia parentesi con e senza dollaro

+0

Per una risposta più completa vedere http://tldp.org/LDP/abs/html/special-chars.html. Per esempio $ in contesto regex significa fine riga. Generalmente $ var dà il valore di var. Considerando var come riferimento a (o nome di) un valore, ad esempio in var = value, var varferenze var per produrre il valore a cui fa riferimento e può essere considerato come operatore di deferenza in contesti in cui prefigura un riferimento. –

risposta

64
  • $(...) mezzi eseguire il comando nelle parentesi e restituisce il suo stdout. Esempio:

    $ echo "The current date is $(date)" 
    The current date is Mon Jul 6 14:27:59 PDT 2015 
    
  • (...) mezzi eseguire i comandi elencati nelle parentesi in una subshell. Esempio:

    $ a=1; (a=2; echo "inside: a=$a"); echo "outside: a=$a" 
    inside: a=2 
    outside: a=1 
    
  • $((...)) mezzi eseguire aritmetica e restituiscono il risultato del calcolo. Esempio:

    $ a=$((2+3)); echo "a=$a" 
    a=5 
    
  • ((...)) mezzi eseguire aritmetica, eventualmente modificando i valori delle variabili di shell, ma non ritornano suo risultato. Esempio:

    $ ((a=2+3)); echo "a=$a" 
    a=5 
    
  • ${...} mezzi restituiscono il valore della variabile shell denominato nelle parentesi. Esempio:

    $ echo ${SHELL} 
    /bin/bash 
    
  • {...} mezzi eseguire i comandi nelle parentesi come gruppo. Esempio:

    $ false || { echo "We failed"; exit 1; } 
    We failed 
    

Più in generale ciò che il simbolo del dollaro stand for?

Significa qualsiasi cosa significhi nel contesto dato.

+0

Grazie, cercato per un po 'ma non riuscivo a trovarlo da nessuna parte. –

+0

"man bash" menziona tutto ciò. – choroba

+3

Almeno per '((...))' e '(...)', si può pensare alla versione con prefisso dollaro che funziona come l'istruzione, ma espandendosi all'output (dove "output" di '((...))' è il risultato aritmetico C'è un'analogia più sottile per '{...}'; in ogni caso, raggruppano i loro contenuti lontano da ciò che li circonda. Pensa a '$ {pippo} _bar' vs '$ foo_bar' e' echo foo; echo bar>/dev/null' vs '{echo foo; echo bar;}>/dev/null'. – chepner

Problemi correlati