Vì tôi đã đề xuất printf
trong một nhận xét, có lẽ tôi nên đưa ra một số ví dụ về cách sử dụng nó (mặc dù để in một thông điệp sử dụng, tôi có nhiều khả năng sử dụng câu trả lời của Dennis hoặc Chris). printf
là một chút phức tạp để sử dụng hơn echo
. Đối số đầu tiên của nó là một chuỗi định dạng, trong đó thoát (như \n
) luôn được diễn giải; nó cũng có thể chứa các chỉ thị định dạng bắt đầu bằng %
, điều khiển ở đâu và làm thế nào bất kỳ đối số bổ sung nào được bao gồm trong đó. Dưới đây là hai cách tiếp cận khác nhau để sử dụng nó cho thông điệp sử dụng:
Đầu tiên, bạn có thể bao gồm toàn bộ tin nhắn trong chuỗi định dạng:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: \nup home page: \n"
Lưu ý rằng không giống như echo
, bạn phải bao gồm dòng mới cuối cùng một cách rõ ràng. Ngoài ra, nếu thông báo có chứa bất kỳ %
ký tự nào , chúng sẽ phải được viết dưới dạng %%
. Nếu bạn muốn bao gồm các địa chỉ trang chủ và lỗi, chúng có thể được thêm vào một cách khá tự nhiên:
printf "usage: up [--level <n>| -n <levels>][--help][--version]\n\nReport bugs to: %s\nup home page: %s\n" "$bugreport" "$homepage"
Thứ hai, bạn chỉ có thể sử dụng chuỗi định dạng để làm cho nó in từng đối số bổ sung trên một dòng riêng biệt:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: " "up home page: "
Với tùy chọn này, việc thêm địa chỉ bugreport và trang chủ là khá rõ ràng:
printf "%s\n" "usage: up [--level <n>| -n <levels>][--help][--version]" "" "Report bugs to: $bugreport" "up home page: $homepage"
echo >&2 ...