Como recomendé printf
en un comentario, probablemente debería dar algunos ejemplos de su uso (aunque para imprimir un mensaje de uso, es más probable que use las respuestas de Dennis o Chris). printf
es un poco más complejo de usar que echo
. Su primer argumento es una cadena de formato, en la que los escapes (como \n
) siempre se interpretan; también puede contener directivas de formato que comienzan con %
, que controlan dónde y cómo se incluyen argumentos adicionales. Aquí hay dos enfoques diferentes para usarlo para un mensaje de uso:
Primero, puede incluir el mensaje completo en la cadena de formato:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: \nup home page: \n"
Tenga en cuenta que echo
, a diferencia , debe incluir la nueva línea final explícitamente. Además, si el mensaje contiene %
caracteres, deberían escribirse como %%
. Si desea incluir el informe de errores y las direcciones de la página de inicio, se pueden agregar de forma natural:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: %s\nup home page: %s\n" "$bugreport" "$homepage"
En segundo lugar, puede usar la cadena de formato para que imprima cada argumento adicional en una línea separada:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: " "up home page: "
Con esta opción, agregar el informe de errores y las direcciones de la página de inicio es bastante obvio:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: $bugreport" "up home page: $homepage"
echo >&2 ...
--help
(que debería ir a la salida estándar).printf
solución basada en Gordon Davidson. A pesar de estar a la sombra de los enfoquesecho
ocat
basados, parece ser mucho menos problemático. Es cierto que la sintaxis 'printf' representa una pequeña curva de aprendizaje, pero me gustaría conocer otros inconvenientes (? Compatibilidad, rendimiento? ...)