【发布时间】:2013-01-17 08:22:11
【问题描述】:
我正在编写一个简单的 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 似乎并没有根据参数是否存在而有所不同,所以我没有像预期的那样使用可选参数获得正确的行为(即,我无法通过 shift 来切换正确数量的参数,无论参数是否存在)。
我希望以下两项都能正确执行:
foo a b c
foo -t 5 a b c
实现这一目标的最简单方法是什么?我更喜欢不是 hack 的解决方案,因为我可能想要使用额外的可选参数。
【问题讨论】:
标签: bash