Bash tips: differenze tra le versioni

accesso al contenuto di una variabile
(accesso al contenuto di una variabile)
Riga 170: Riga 170:
  1
  1


; <code>$@</code> : contiene la lista dei parametri passati allo script corrente. Ogni parametro viene opportunamente quotato, se questa variabile è quotata, e questo ne permette l'utilizzo nei '''cicli for''' per processare (ad esempio) una lista di nomi di file che possono contenere anche spazi. L'uso di questa variabile è quindi in genere consigliato rispetto a <code>'''$*'''</code> che ha la stessa funzione ma, se quotata, non quota i vari parametri ma l'intera stringa;
; <code>$@</code> : contiene la lista dei parametri passati allo script corrente o a una funzione. Ogni parametro viene opportunamente quotato, se questa variabile è quotata, e questo ne permette l'utilizzo nei '''cicli for''' per processare (ad esempio) una lista di nomi di file che possono contenere anche spazi. L'uso di questa variabile è quindi in genere preferito rispetto a <code>'''$*'''</code> che ha la stessa funzione ma, se quotata, non quota i vari parametri ma l'intera stringa;


''Esempio:''
''Esempio:''
Riga 190: Riga 190:
Se si usa Bash, non è necessario usare nessun programma esterno, ma basta imparare i tre operatori fondamentali ed alcuni concetti di base, per poter fare tutte le manipolazioni più comuni.
Se si usa Bash, non è necessario usare nessun programma esterno, ma basta imparare i tre operatori fondamentali ed alcuni concetti di base, per poter fare tutte le manipolazioni più comuni.


In Bash una stringa non è altro che una variabile, si indica dunque con <code>${nome}</code> oppure con la forma abbreviata <code>$nome</code>. Il nome dentro le graffe può essere seguito da un modificatore che manipola la variabile, ad esempio:
In Bash ogni variabile (di default) è trattata come una stringa, e un nome di variabile ammette soltanto caratteri alfabetici (maiuscoli e minuscoli), l'underscore "_" e numeri (questi ultimi purché non in prima posizione).
Si indica dunque con <code>${nome}</code> oppure con la forma abbreviata <code>$nome</code>. Si noti che la forma abbreviata considera il nome della variabile come composto da tutti i caratteri validi incontrati (per esempio "$nome$cognome" è equivalente a "${nome}${cognome}", ma "$nome_$cognome" non lo è a "${nome}_${cognome}" perché "nome_" sarebbe un nome di variabile valido). In caso di concatenazione di variabili è preferibile accedere alle variabili con le graffe, o in alternativa delimitarle da un carattere "\" (per esempio: "$nome\_$cognome" corrisponde a "${nome}_${cognome}).
 
È bene notare che quando si accede al contenuto di una variabile senza quotarla, questa può essere trasformata in più di una singola stringa, in base agli spazi contenuti, e perfino in "niente" se è vuota ("niente" proprio come se non presente nel codice). Se invece si vuole sempre considerare il contenuto della variabile come una singola stringa, è necessario accederla quotata (tra virgolette), ossia con "$variabile" oppure "${variabile}". Questo fatto è di particolare importanza quando si utilizza la variabile in una condizione ([ ... ], test ..., ecc...), perché la variabile potrebbe essere sostituita da più di una stringa o perfino da nessuna; e anche quando la si passa a un comando, in particolare se agisce su un file indicato dalla variabile, che potrebbe venir trattato come più di un file. L'utilità nel non quotarla d'altra parte consiste nella possibilità di assegnare tutte le opzioni da passare a un comando a una singola variabile, accedendovi in seguito per passargli tutte le stringhe (o nessuna stringa, se lasciata vuota) in una volta sola.
 
Il nome dentro le graffe può essere seguito da un modificatore che manipola la variabile, ad esempio:


  VAR="stringa-di-esempio"
  VAR="stringa-di-esempio"
Riga 325: Riga 330:
# seleziona, apri file, incolla, salva: noioso
# seleziona, apri file, incolla, salva: noioso
# quota il tutto e appendi ad un file con echo: già meglio
# quota il tutto e appendi ad un file con echo: già meglio
# <code>'''CTRL-x'''</code> <code>'''CTRL-e'''</code>, si apre il nostro editor di fiducia e salviamo: superbo (se si utilizza la modalità ''vi'' è sufficiente premere il tasto v in modalità comando)
# in modalità ''Emacs'' (il default) <code>'''CTRL-x''' <code>'''CTRL-e'''</code>, si apre il nostro editor di fiducia e salviamo: superbo; mentre se si utilizza la modalità ''vi'' è sufficiente premere il tasto '''v''' in modalità comando


===Processo in background===
===Processo in background===
3 581

contributi