我正在编写一个简单的 bash 脚本,它采用一个可选参数 (-t ),后跟一些附加参数。
我在想 getopts 将是实现这一目标的合理方法,但我很难获得所需的行为。我所拥有的是以下内容:
foo() {
baz=10
while getopts ":t:" option; do
case "$option" in
t) baz=$OPTARG ;;
esac
done
shift $((OPTIND - 1))
bar -t $baz $1 $2 $3
}
问题是它$OPTIND
似乎并没有根据参数是否存在而有所不同,所以我没有得到预期的正确行为与可选参数(即,无论论点是否存在)。
我希望以下两项都能正确执行:
foo a b c
foo -t 5 a b c
实现这一目标的最简单方法是什么?我更喜欢不是 hack 的解决方案,因为我可能想使用其他可选参数。