gpt4 book ai didi

linux - shell getopts参数收集问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:26 26 4
gpt4 key购买 nike

我的 shell 脚本中有以下代码。

show_help()
{
cat <<EOF
Usage: ${0##*/} [-h help] [-g GATEWAY_HOSTID] [-t TIMEZONE]

-h display this help and exit
-g GATEWAY_HOSTID zabbix gateway identifier (e.g. '20225')
-t Time Zone TimeZone against which you want to test
EOF
}

OPTIND=1

while getopts "g:h:t" opt; do
case "$opt" in
h)
show_help
exit 0
;;
g)
gateway_hostid=$OPTARG
;;
t)
timezone=$OPTARG
;;
esac
done

shift $((OPTIND-1))

if [[ ! $timezone ]]; then
timezone="UTC"
fi

if [[ ! $gateway_hostid ]]; then
echo "hostid is missing!!! Exiting now."
exit
fi

当我执行脚本时,它只接受参数 gateway_hostid 并忽略时区参数。我不确定我在这里做错了什么。它也没有显示帮助功能。有人可以帮忙吗。下面是调用脚本的语法。

./script_name.sh -g 20225 -t Europe/Zurich
./script_name.sh -g 20225 -t CEST

最佳答案

您的问题出在 optstring 上。您正在指定 h:,这意味着 -h 需要一个选项。您还指定了不带 :t,这意味着 t 不需要选项。

gt 接受选项而 h 不需要的 optstring 是 hg:t:

关于linux - shell getopts参数收集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com