Поскольку я рекомендовал printfв комментарии, я, вероятно, должен привести несколько примеров его использования (хотя для печати сообщения об использовании я бы с большей вероятностью использовал ответы Денниса или Криса). printfнемного сложнее в использовании, чем echo. Его первый аргумент - это строка формата, в которой экранирование (например \n) всегда интерпретируется; он также может содержать директивы формата, начиная с %которых, которые определяют, где и как любые дополнительные аргументы включаются в него. Вот два разных подхода к его использованию для сообщения об использовании:
Во-первых, вы можете включить все сообщение в строку формата:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: \nup home page: \n"
Обратите внимание, что в отличие от этого echo, вы должны явно указывать заключительный символ новой строки. Кроме того, если сообщение содержит какие-либо %символы, они должны быть записаны как %%. Если вы хотите включить адреса отчетов об ошибках и домашнюю страницу, их можно добавить совершенно естественно:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: %s\nup home page: %s\n" "$bugreport" "$homepage"
Во-вторых, вы можете просто использовать строку формата, чтобы она выводила каждый дополнительный аргумент в отдельной строке:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: " "up home page: "
С этой опцией добавление адресов багрепорта и домашней страницы довольно очевидно:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: $bugreport" "up home page: $homepage"
echo >&2 ...