Bash getopts数组为空

时间:2018-12-13 13:33:46

标签: bash getopts

我正在数组中收集-t-p参数,但结果却是空的。奇怪的是,相同的代码在另一个函数中的作用与意图相同。

declare -a TARGETS
declare -a PACKAGES
while getopts "t:p:" opt ; do
    case $opt in
        t) TARGETS+=("$OPTARG");;
        p) PACKAGES+=("$OPTARG");;
    esac
done
echo ${TARGETS[@]} # empty
echo ${PACKAGES[@]} # empty as well 

该函数的调用方式如下:

func -t shared -t INFD_17 -p "barebox.afp=bootloader"  -p "barebox_env.afp=bootloader-env" -p kernel.afp -p rootfs.afp

编辑:我需要声明一些局部变量。

local OPTIND t p
declare -a TARGETS
declare -a PACKAGES
while getopts "t:p:" opt ; do
    case $opt in
        t) TARGETS+=("$OPTARG");;
        p) PACKAGES+=("$OPTARG");;
    esac
done
echo ${TARGETS[@]} # empty
echo ${PACKAGES[@]} # empty as well

0 个答案:

没有答案