Bash scripting - istruzioni composte: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
nessun oggetto della modifica
(rimosse le funzioni e aggiunta l'istruzione "case" ed esempi per condizioni complesse (con e senza "case"))
mNessun oggetto della modifica
Riga 84: Riga 84:


I più comuni comandi esterni impiegati con una pipe (per informazioni sulle loro opzioni si lascia alla lettura della loro pagina di manuale):
I più comuni comandi esterni impiegati con una pipe (per informazioni sulle loro opzioni si lascia alla lettura della loro pagina di manuale):
* <code>cat</code> per concatenare più file;
* <code>cat</code> e <code>tac</code> per concatenare più file, stampandoli in ordine iniziando dalla prima riga oppure in ordine inverso dall'ultima;
* <code>head</code> e <code>tail</code> per leggere la parte iniziale e finale di un file;
* <code>head</code> e <code>tail</code> per leggere la parte iniziale oppure finale di un file;
* <code>grep</code> per filtrare le righe di un file in base a un dato pattern;
* <code>grep</code> per filtrare le righe di un file in base a un dato pattern;
* <code>sed</code> per modificare le parti corrispondenti a un dato pattern con altre stringhe;
* <code>sed</code> per modificare le parti corrispondenti a un dato pattern con altre stringhe;
Riga 304: Riga 304:
</pre>
</pre>


Va solo ricordato che nel pattern ci sono cinque caratteri speciali, il separatore di pattern e i quattro del ''globbing'' (<code>| * ? [ ]</code>), che come per l'espansione di percorso non possono essere quotati. È bene invece che tutto il resto sia quotato, se si usano variabili o si intende usare questi caratteri per il loro valore letterale.
È un'istruzione molto usata per implementare un menù e per la lettura (parsing) degli argomenti passati allo script.
===Esempio: controllo sul percorso di un file===
Controllare il percorso di un file, e aggiungere quello relativo se manca:
Controllare il percorso di un file, e aggiungere quello relativo se manca:
<pre>
<pre>
Riga 327: Riga 332:
esac
esac
</pre>
</pre>
Va solo ricordato che nel pattern ci sono cinque caratteri speciali, il separatore di pattern e i quattro del ''globbing'' (<code>| * ? [ ]</code>), che come per l'espansione di percorso non possono essere quotati. È bene invece che tutto il resto sia quotato, se si usano variabili o si intende usare questi caratteri per il loro valore letterale.
È un'istruzione molto usata per implementare un menù e per la lettura (parsing) degli argomenti passati allo script.


===Parsing degli argomenti===
===Parsing degli argomenti===
Riga 348: Riga 349:
* tutto ciò che non è un'opzione o un argomento di un'opzione, e tutto ciò che segue <code>--</code>, è considerato una lista di argomenti. Per accederli è necessario effettuare lo shift (con il comando <code>shift</code>) di tutte le stringhe già lette, ossia: $OPTIND - 1.
* tutto ciò che non è un'opzione o un argomento di un'opzione, e tutto ciò che segue <code>--</code>, è considerato una lista di argomenti. Per accederli è necessario effettuare lo shift (con il comando <code>shift</code>) di tutte le stringhe già lette, ossia: $OPTIND - 1.


Per esempio:
====Esempio: script con parsing degli argomenti====
<pre>
<pre>
#! /bin/sh
#! /bin/sh
Riga 396: Riga 397:


Lo script supporta per esempio tutte queste chiamate (e anche altre combinazioni), che hanno lo stesso significato, perché <code>getopts</code> se ne occupa automaticamente:
Lo script supporta per esempio tutte queste chiamate (e anche altre combinazioni), che hanno lo stesso significato, perché <code>getopts</code> se ne occupa automaticamente:
<pre>./script.sh -c -f archivio -- file1 file2 file3</pre>
<pre>
<pre>./script.sh -c -f archivio file1 file2 file3</pre>
$ ./script.sh -c -f archivio -- file1 file2 file3
<pre>./script.sh -cf archivio file1 file2 file3</pre>
$ ./script.sh -c -f archivio file1 file2 file3
<pre>./script.sh -cfarchivio file1 file2 file3</pre>
$ ./script.sh -cf archivio file1 file2 file3
<pre>./script.sh -f archivio -c file1 file2 file3</pre>
$ ./script.sh -cfarchivio file1 file2 file3
<pre>./script.sh -farchivio -c file1 file2 file3</pre>
$ ./script.sh -f archivio -c file1 file2 file3
 
$ ./script.sh -farchivio -c file1 file2 file3
</pre>


[[Categoria:Bash]][[Categoria:Bash_Scripting]]
[[Categoria:Bash]][[Categoria:Bash_Scripting]]
3 581

contributi

Menu di navigazione