Tôi đang cố gắng tìm hiểu trường hợp khi tôi viết một kịch bản đầy đủ chức năng.Tuyên bố trường hợp Bash
tôi bắt đầu với bên dưới
#!/bin/sh
case [email protected] in
-h|--help)
echo "You have selected Help"
;;
-B|-b)
echo "You have selected B"
;;
-C|-c)
echo "You have selected C"
;;
*)
echo "Valid Choices are A,B,C"
exit 1
;;
esac
Tôi muốn sử dụng hai trong số các tùy chọn này:
./getopts.sh -h -c
Nhưng tôi nhận được kết quả này Lựa chọn hợp lệ là A, B, C
Vui lòng giúp bạn và cho tôi biết tôi đang làm gì sai?
Tôi muốn tạo tập lệnh sẽ thực hiện điều gì đó nếu bạn nhập một tùy chọn nhưng thực hiện nhiều việc nếu bạn nhập nhiều.
Ngoài ra làm thế nào tôi sẽ phân tích $ 1 cho tập lệnh này là surley mà bao giờ tùy chọn tôi nhập đầu tiên (-h) sẽ là $ 1 ??
Cảm ơn!
Tại sao bạn không sử dụng 'getopts' thay vì' case'? – fedorqui
Tôi đang mở cho bất kỳ ý tưởng như tôi đã không thực sự được sử dụng, hoặc. Tôi cần phải tìm hiểu điều này hơn là có 1000 lồng nhau nếu các câu lệnh – bsmoo
@fedorqui Ngay cả với getopts, người ta vẫn cần một vòng lặp (thường là một vòng lặp while) và một số loại phân tích trường hợp, và 'case' là tốt hơn nhiều so với' if ... elif ... 'vì mục đích đó. – Uwe