bash:选项后直接获得价值



我正在写一个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

最新更新