Ponieważ zaleciłem printf
w komentarzu, prawdopodobnie powinienem podać kilka przykładów jego użycia (chociaż w przypadku drukowania komunikatu o użytkowaniu chętniej skorzystam z odpowiedzi Dennisa lub Chrisa). printf
jest nieco bardziej skomplikowany w użyciu niż echo
. Pierwszym argumentem jest ciąg formatu, w którym znaki specjalne (jak \n
) są zawsze interpretowane; może również zawierać dyrektywy formatujące zaczynające się od %
, które kontrolują, gdzie i jak mają być uwzględnione dodatkowe argumenty. Oto dwa różne podejścia do używania go w komunikacie użytkowania:
Po pierwsze, możesz dołączyć całą wiadomość do ciągu formatu:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: \nup home page: \n"
Zauważ, że w przeciwieństwie do tego echo
musisz wyraźnie dołączyć ostatni znak nowej linii. Ponadto, jeśli wiadomość zawiera jakieś %
znaki, należy je zapisać jako %%
. Jeśli chcesz dołączyć raport o błędzie i adresy strony głównej, można je dodać całkiem naturalnie:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: %s\nup home page: %s\n" "$bugreport" "$homepage"
Po drugie, możesz po prostu użyć ciągu formatu, aby wydrukować każdy dodatkowy argument w osobnym wierszu:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: " "up home page: "
Dzięki tej opcji dodanie raportu o błędzie i adresu strony głównej jest dość oczywiste:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: $bugreport" "up home page: $homepage"
echo >&2 ...