Getopts - lệnh với nhiều tùy chọn


0

Tôi có một kịch bản lệnh tôi đang thực hiện và tự hỏi làm thế nào để kết hợp nhiều tùy chọn

cách sử dụng chung của lệnh như sau:

Cách sử dụng: myCommand [-fpr] [-n Count] [-s size] [-u user] [-d thư mục]

Câu hỏi của tôi đề cập đến tùy chọn [-fpr]. Nếu người dùng gõ myCommand -fpr hoặc myCommand -fp, làm cách nào để kết hợp / ghép các tùy chọn lại với nhau nếu trong vòng lặp while?

while getopts "fpr" opt; do
    case $opt in
    f)
        echo `-l`
        echo "-f was triggered!" >&2
        ;;
    p)
            echo `-h`
        echo "-p was triggered!" >&2
        ;;
    r)
        echo "-r was triggered!" >&2
        ;;

    \?)
        echo "Invalid option: -$OPTARG\n" >&2
        usage
        ;;
    esac
done

Tôi không hiểu câu hỏi thực tế của bạn. Nhưng echo `-h`không có nghĩa gì khi nó cố gắng thực thi -hvà sau đó lặp lại kết quả của nó ...
Jasper

Câu trả lời:


1

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn đang cố gắng tìm ra cách xử lý -fprgiống như -f -p -r. Trong trường hợp đó, getoptslàm điều này cho bạn.

Nếu bạn muốn sử dụng "tùy chọn dài" -fprvà không đe dọa nó giống hệt -f -p -r, thì bạn cần phải từ bỏ getoptsvà xem xét ví dụ getopt(lưu ý thiếu sphần cuối), hỗ trợ các tùy chọn dài. Xem ví dụ: http://linux.die.net/man/1/getopt để biết chi tiết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.