2016-01-02 14 views
6

Jestem początkującym skryptem powłoki, ucząc się go samodzielnie i widzę wiele skryptów z funkcją usage(). Na przykład:Co to jest usage() w skryptach powłoki?

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

Jaki rodzaj funkcji powinien być nazywany usage? I czy istnieje związek z "oświadczeniem o użyciu"? Nie mogłem znaleźć żadnej podstawowej definicji tego ...

+0

Bardziej szczegółowe opisy w 'usage()' można użyć 'heredoc' patrz: [** Here Documents - The Linux Documentation Project **] (http://tldp.org/LDP/abs/html /here-docs.html). Które często znajdujesz, gdy 'usage()' podaje szczegółowe informacje o skrypcie, wraz z listą opcji i opisem każdego z nich. Zapobiega on używaniu wielu instrukcji 'echo' lub' printf' jeden po drugim ... –

Odpowiedz

13

To tylko konwencja. Gdy coś jest nie tak z wartościami podanymi w linii poleceń, ludzie często używają funkcji zwanej use(), aby powiedzieć ci problem/oczekiwane wartości. Na przykład:

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

dzięki tobie, wspaniałej pomocy: – user1508682

+0

Konwencja: wydrukuj użycie na standardowe wyjście (& 1), gdy potrzebujesz pomocy ('-h, - help') jest wymagane; wydrukuj użycie na stderr (& 2) w przeciwnym razie. – rubicks

+1

"();" w podanym przykładzie nie występuje w POSIX. –

3

Podczas sprawdzania argumentów wysyłanych do programu należy powiadomić użytkownika, że ​​nie wykonał polecenia.

Na przykład, jeśli spodziewasz się, że twój program zostanie wywołany z myprogram filename, zadzwoń pod usage, jeśli nie ma parametru lub więcej niż 1 parametr.

Zamiast mieć tę samą wiadomość w kilku miejscach kodu z treścią usage, lepiej jest wykonywać tylko jedną funkcję.