Bash 对于不同的参数,结果相同
我有一个奇怪的情况。对于不同的参数,我总是得到相同的结果Bash 对于不同的参数,结果相同,bash,Bash,我有一个奇怪的情况。对于不同的参数,我总是得到相同的结果 function test { while getopts 'c:S:T:' opt ; do case "$opt" in c) STATEMENT=$OPTARG;; S) SCHEMA=$OPTARG;; T) TABLE=$OPTARG;; esac done echo "$STATEMENT, $SCHEMA, $TABLE" }
function test
{
while getopts 'c:S:T:' opt ; do
case "$opt" in
c) STATEMENT=$OPTARG;;
S) SCHEMA=$OPTARG;;
T) TABLE=$OPTARG;;
esac
done
echo "$STATEMENT, $SCHEMA, $TABLE"
}
test -c CREATE -S schema1 -T tabela1
test -c TRUNCATE -S schema2 -T tabela2
test -c DROP -S schema3 -T tabela3
结果:
CREATE, schema1, tabela1
CREATE, schema1, tabela1
CREATE, schema1, tabela1
我的脚本中有什么失败了?在bash中,需要本地化$OPTIND变量
function test () {
local OPTIND
否则它是全局的,对getopts
的下一次调用将返回false(即所有已处理的参数)。考虑其他变量的本地化,如果它们不在函数之外使用。
您也可以将其设置为零。我刚刚运行了您的脚本,没有出现问题