3 581
contributi
(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 | * <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> | ||
===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. | ||
====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> | ||
$ ./script.sh -c -f archivio -- file1 file2 file3 | |||
$ ./script.sh -c -f archivio file1 file2 file3 | |||
$ ./script.sh -cf archivio file1 file2 file3 | |||
$ ./script.sh -cfarchivio file1 file2 file3 | |||
$ ./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]] |
contributi