在bash中获取数组大小的问题

时间:2014-03-16 20:47:50

标签: arrays bash grep do-while

我有这个代码来获取使用grep:

的表达式过滤的所有行
arrvar=( $(grep -Poh '^[A-Z_]+=.+' input.txt) )
arrlen=${#arrvar[@]}

i=0
while : ; do

    split=(${arrvar[i]//=/ })

    name="${split[0]}"
    value="${split[1]}"

    echo "index..: $i"
    echo "name...: $name"
    echo "value..: $value"

    i=$(( i + 1 ))
    if [ $i > $arrlen ]; then
      break
    fi
done

在input.txt中填写此内容:

HELLO=111
STACK=222
OVERFLOW=333

结果如下:

index..: 0
name...: STACK
value..: 222

为什么只返回数组的第一项而不是文件的三项?

1 个答案:

答案 0 :(得分:2)

你正在测试这样:

if [ $i > $arrlen ]

但你可能意味着

if (( i > arrlen ))

[按字典顺序进行比较,((比较数字。