Tôi đang cố gắng sử dụng printf để định dạng một số đầu ra đẹp trong tập lệnh bash
ví dụ:
-----------------------
| This is some output |
-----------------------
Nhưng tôi đã vấp phải một số hành vi tôi không hiểu.
$ printf "--"
cho tôi lỗi printf: usage: printf [-v var] format [arguments]
và
$ printf "-stuff"
kết quả trong-bash: printf: -s: invalid option
Vì vậy, rõ ràng printf nghĩ rằng tôi đang cố gắng vượt qua một số đối số trong khi tôi thì không.
Trong khi đó, hoàn toàn tình cờ, tôi đã tìm thấy cách giải quyết này:
$ printf -- "--- this works now ----\n"
cho tôi--- this works now ----
Bất cứ ai có thể giải thích hành vi này?
echo
nào sẽ thất bại khi làm echo ------------
không? Hầu hết chỉ hỗ trợ -n
(không có dòng mới), -e
(giải thích các ký tự thoát dấu gạch chéo ngược) và có thể -E
(KHÔNG diễn giải chúng) và không lỗi khi gặp các đối số giống như tùy chọn khác, phải không? (EDIT: GNU's /bin/echo
cũng hỗ trợ --help
và --version
.)