自从我printf
在评论中建议以来,我可能应该给出一些用法示例(尽管为了打印用法消息,我更可能使用Dennis或Chris的答案)。 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 ...