2016-01-02 21 views
6

Sono nuovo nello script di shell, l'apprendimento in modo indipendente e sto visualizzando molti script con una funzione usage(). Per esempio:Che cos'è usage() nello scripting di shell?

usage() 
{ 
echo "Usage: $0 filename" 
exit 1 
} 

Che tipo di funzioni dovrebbe essere chiamato usage? E c'è relazione con "dichiarazione d'uso"? Non sono riuscito a trovare alcuna definizione di base per questo ...

+0

Per descrizioni più dettagliate in un 'usage()' è possibile utilizzare un 'heredoc' vedere: [** Here Documents - The Linux Documentation Project **] (http://tldp.org/LDP/abs/html /here-docs.html). Che è spesso ciò che si trova quando 'usage()' fornisce informazioni dettagliate sullo script, insieme a un elenco di opzioni e una descrizione di ciascuno. Impedisce l'uso di numerose istruzioni 'echo' o' printf' una dopo l'altra ... –

risposta

13

È solo una convenzione. Quando qualcosa non va con i valori forniti sulla riga di comando, le persone spesso usano una funzione chiamata usage() per dirti il ​​problema/i valori attesi. Ad esempio:

#!/bin/sh 
if [ $# -ne 1 ] ; then 
    usage 
else 
    filename=$1 
fi 
... 
+0

grazie a entrambi, ottimo aiuto – user1508682

+0

Convenzionale: stampa l'utilizzo su stdout (& 1) quando l'aiuto ('-h, - help') è richiesto; stampare l'utilizzo su stderr (e 2) altrimenti. – rubicks

+1

Il "();" nell'esempio dato non sembra essere in POSIX. –

3

Quando si controllano gli argomenti inviati al programma, è necessario notificare all'utente che ha fallito il comando.

Ad esempio, se si prevede che il proprio programma venga chiamato con myprogram filename, verrà chiamato usage se non ci sono parametri o più di 1 parametro.

Invece di avere lo stesso messaggio in più posizioni nel codice con il contenuto di usage, è consigliabile eseguire una sola funzione.

Problemi correlati