我正在数组中收集-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