shell:迭代数组

dev*_*ang 3 bash

我的脚本接受键值对作为命令行参数.我测试给定数量的参数是否均匀.如果是偶数,我想迭代数组,考虑args[n]&args[n+1]作为一对(n = 0 to $# - 1)并执行另一个命令,将这两个作为参数.我无法获得for循环.这是我的代码 -

#!/bin/sh

usage() {
    echo "$0 <property-name> <property-value> [<property-name> <property-value> ...]"
    exit 1
}

if [ $# -lt 2 ] ; then
    usage
fi

# Should be even number of arguments
if [ $(( $# % 2 )) -ne 0 ]
    echo "Even number of arguments expected."
    usage
fi
args=("$@")
COMMAND="/mycommand "
for ### WHAT SHOULD I WRITE HERE??
    PROPERTY=${args[$c]}
    VALUE=${args[$c + 1]}
    COMMAND="mycommand $PROPERTY $VALUE"
    ## Execute command
done
Run Code Online (Sandbox Code Playgroud)

Gil*_*not 5

试着这样做:

for ((i=0; i<${#args[@]}; i+=2)); do
    PROPERTY="${args[$i]}"
    VALUE="${args[$i + 1]}"
    COMMAND="mycommand $PROPERTY $VALUE"
    bash -c "$COMMAND"
done
Run Code Online (Sandbox Code Playgroud)

我建议不要使用CAPITALIZED字符作为变量名,保留那些内部系统变量