Bash函数仅在脚本中多次运行时才接受第一组输入

时间:2019-04-28 18:44:36

标签: bash getopts

我在bash脚本中有一个函数,该函数应该接受并处理输入。但是,如果我在脚本中多次运行该函数,它将仅处理第一个函数的输入。每个后续函数都使用传递给第一个函数的参数。该功能正常运行,但没有正确的输入。

我尝试注释掉正在调用的函数的实例,并且下一个函数正确运行,但是所有后续操作都使用在第一次运行中定义的参数。

funcInitiate (){
   while getopts "d:i:a:b:c:e:f:g:" opt
   do
      case "$opt" in
         a) f1="$OPTARG" ;;
         b) f2="$OPTARG" ;;
      esac
   done
   outherFunc
   foo=$f1;foo+=$f2
   echo $foo
}

如果我运行

funcInitiate -a abc -b def
funcInitiate -a xyz -b abc

我回来了:

abcdef
abcdef

如果我禁用了top函数,第二个函数将正确返回xyzabc。显然,这只是一个例子,但令人非常沮丧。

0 个答案:

没有答案