Tôi nhớ đã từng thấy ở đâu đó một bash
tập lệnh sử dụng case
và duyệt shift
qua danh sách các tham số vị trí, cờ phân tích và các tùy chọn với các đối số khi nó gặp chúng và xóa chúng sau khi phân tích cú pháp để chỉ các đối số trần, phần còn lại được xử lý bởi phần còn lại của kịch bản.
Ví dụ, khi phân tích cú pháp dòng lệnh cp -R file1 -t /mybackup file2 -f
, trước tiên, nó sẽ đi qua các tham số, nhận ra rằng người dùng đã yêu cầu xuống thư mục bằng cách -R
, chỉ định mục tiêu bằng cách -t /mybackup
và buộc sao chép -f
và xóa chúng khỏi danh sách tham số, để lại chương trình để xử lýfile1 file2
như các đối số còn lại.
Nhưng dường như tôi không thể nhớ / tìm ra bất kỳ kịch bản nào tôi thấy bất cứ khi nào. Tôi chỉ muốn có thể làm điều đó. Tôi đã tìm kiếm trên các trang web khác nhau và thêm một danh sách các trang có liên quan mà tôi đã xem xét.
Một câu hỏi trên trang web này được hỏi cụ thể về "tùy chọn độc lập theo thứ tự" nhưng cả câu trả lời duy nhất và câu trả lời của câu hỏi đã bị lừa để không xem xét các trường hợp như ở trên, nơi các tùy chọn được trộn lẫn với các đối số bình thường, mà tôi cho là lý do để người đề cập cụ thể đến độc lập trật tự lựa chọn .
Vì tính bash
năng tích hợp sẵn getopts
dường như dừng lại ở đối số không phải tùy chọn đầu tiên, nên dường như nó không đủ để giải quyết. Đây là lý do tại sao trang của Wooledge BashFAQ (xem bên dưới) giải thích cách sắp xếp lại các đối số. Nhưng tôi muốn tránh tạo nhiều mảng trong trường hợp danh sách đối số khá dài.
Vì shift
không hỗ trợ bật các đối số riêng lẻ ra giữa danh sách tham số, tôi không chắc đâu là cách đơn giản để thực hiện những gì tôi đang hỏi.
Tôi muốn nghe nếu có ai có bất kỳ giải pháp nào để loại bỏ các đối số từ giữa danh sách tham số mà không tạo ra một mảng hoàn toàn mới.
Các trang mà tôi đã xem:
- http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_argument
- http://mywiki.wooledge.org/BashFAQ/035
- Sử dụng getopts trong bash shell script để có các tùy chọn dòng lệnh dài và ngắn
- http://wiki.bash-hackers.org/scripting/poseparams
- http://wiki.bash-hackers.org/howto/getopts_tutorial
- trường hợp đối số bash cho args trong $ @
- Cách chính tắc để thực hiện các tùy chọn độc lập trật tự trong các tập lệnh bash là gì?
- Làm cách nào để xử lý các công tắc trong tập lệnh shell?