我正在写一个bash脚本,需要获取一些参数arg1,arg2,...我需要一次,有时,但并非总是得到多个。现在的问题是,如果代码在整个命令的位置2处,则只有代码才能抓住值。(因此,对于2个参数,我已经有一个概率(如何在-argumentone参数之后直接获取输入?无论是第一个论点还是最后一个参数。
for arg in "$@" ; do
case "$arg" in
--argumentone)
VARLUE1=$2
;;
--argumenttwo)
VALUE2=$2
;;
esac
done
您不能从for
循环中。您需要使用while
循环:
while (( $# )); do
curr=$1
shift
case $curr in
--argumentone) VALUE1=$2; shift ;;
--argumenttwo) VALUE2=$2; shift ;;
esac
done
如果您不想在处理列表时修改$@
,则可以使用索引,在上面使用shift
时进行递增:
i=1
while ((i <= $#)); do
curr=${!i}
((i += 1))
case $curr in
--argumentone) VALUE1=${!i}; ((i+=1));;
--argumenttwo) VALUE2=${!i}; ((i+=1));;
esac
done