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(即所有已处理的参数)。考虑其他变量的本地化,如果它们不在函数之外使用。


您也可以将其设置为零。

我刚刚运行了您的脚本,没有出现问题