我想getopts識別用戶何時通過“ -?”和“ -h”并發送到我的幫助功能。如果出現無效選項,我也不想getopts將用戶發送到幫助功能。我想顯示一條不同的訊息,告訴他們這是一個無效的選項并發送到 stderr。
這是我的選項部分:
options(){
# grab options flags before entering application:
while getopts ":h?vu:d" opts; do
case "${opts}"
in
h\?) # Help
help_section
exit 0
;;
v) # Version
version
exit 0
;;
u) # units
other_units="$OPTARG"
;;
d) # Debug
debug=1
;;
\?) # Invalid options
echo "no here"
>&2 echo "[!] ERROR: Invalid Option: -$OPTARG"
exit 1
;;
esac
done
shift $((OPTIND -1))
# Run main function
main_run "$@"
}
問題:getopts當用戶輸入無效選項時,不斷向用戶發送幫助。我需要確保用戶認識到他們提供了無效引數;我不想派他們幫忙。
有沒有辦法實作這個getopts?或者在外部構建邏輯getopts來捕獲和執行我需要的東西?
uj5u.com熱心網友回復:
Bash 命令列輸入示例
以下示例顯示如何采用各種型別的輸入并默認為無效輸入選項。
# -- Get input options (if any)
function get_user_input_options() {
while [[ $# > 0 ]] ;do
key="$1"
case ${key,,} in
-o|--opt)
echo " we a seting option=$2"
option=2
shift
;;
-?|-h|--?|--help)
echo "help information"
exit;
;;
*)
echo "not understading your input at all!"
exit;
;;
esac
shift
done
}
get_user_input_options "$@"
這里發生了什么?
我們讀入所有輸入,并根據型別轉移到下一個或轉移兩次。如果你看到 --opt 被使用,它期待一些東西,之后將被設定為一個變數。更多關于您的問題,我們接受-?要么 - ?如果發生這種情況,它將執行幫助部分的操作,如果沒有處理這些輸入,它將執行“*”部分中的默認值,這意味著任何輸入。注意:這只是一個示例,在這種情況下,即使提供了其他輸入,幫助部分也會導致腳本停止,這可能是也可能不是您個人想要做的。
示例輸出
./args.sh --opt "option"
we a seting option=option
./args.sh --?
help information
./args.sh --invalid_option
not understading your input at all!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/455233.html
上一篇:基于引數的Bash計數出現
