Bash scripting - funzioni: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m (→‎Esempi: funzioni che restituiscono nomi di file: errore nella chiusura di un tag)
Riga 210: Riga 210:
In questo caso è necessario ricordarsi dei due caratteri finali da rimuovere unicamente all'interno della funzione stessa, e non a ogni chiamata. Lo svantaggio è nell'uso di una variabile globale per ogni funzione, per questo è bene usare una forma non ambigua, contenente il nome della funzione e un prefisso comune, usato solo per queste variabili.
In questo caso è necessario ricordarsi dei due caratteri finali da rimuovere unicamente all'interno della funzione stessa, e non a ogni chiamata. Lo svantaggio è nell'uso di una variabile globale per ogni funzione, per questo è bene usare una forma non ambigua, contenente il nome della funzione e un prefisso comune, usato solo per queste variabili.


Si noti che tutte le variabili sono globali, tranne quelle in una funzione definite con <code>local</code>. È bene però non usare mai altre variabili globali, se non sono costante (definite con <code>readonly</code), all'interno di una funzione, per rendere più semplice la comprensione del codice ed evitare modifiche accidentali (con effetti a catena in più parti del codice), e ricorrere invece ai parametri.
Si noti che tutte le variabili sono globali, tranne quelle in una funzione definite con <code>local</code>. È bene però non usare mai altre variabili globali, se non sono costante (definite con <code>readonly</code>), all'interno di una funzione, per rendere più semplice la comprensione del codice ed evitare modifiche accidentali (con effetti a catena in più parti del codice), e ricorrere invece ai parametri.




Riga 247: Riga 247:
exit 0
exit 0
</pre>
</pre>
Quest'ultimo metodo è più veloce da scrivere, e anche più facile da leggere e capire. Si noti però che se esistessero multipli file con lo stesso nome, a parte per la presenza degli "a capo" finali, non verrebbe mai restituito errore con nessuno di loro, ma ogni volta che si specifica uno dei file con "a capo" si finirebbe per usare sempre il file senza "a capo" finali senza possibilità di accorgersene. E il controllo sugli argomenti non garantirebbe da quelli esistenti nel percorso reale restituito da <code>readlink</code>. Può essere tollerabile o meno, dipende dallo scopo dello script, ma soltanto i metodi precedenti sono adatti a tutte le situazioni possibili.
Quest'ultimo metodo è più veloce da scrivere, e anche più facile da leggere e capire. Si noti però che se esistessero multipli file con lo stesso nome, a parte per la presenza degli "a capo" finali, non verrebbe mai restituito errore con nessuno di loro, ma ogni volta che si specifica uno dei file con "a capo" si finirebbe per usare sempre il file senza "a capo" finali senza possibilità di accorgersene. E il controllo sugli argomenti non garantirebbe da quelli esistenti nel percorso reale restituito da <code>readlink</code>.
 
Può essere tollerabile o meno, e lo è nella maggior parte delle situazioni, ma dipende dallo scopo dello script. A ogni modo soltanto i metodi precedenti sono adatti a tutte le situazioni possibili.


[[Categoria:Bash]][[Categoria:Bash_Scripting]]
[[Categoria:Bash]][[Categoria:Bash_Scripting]]