我有这个代码来获取使用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
为什么只返回数组的第一项而不是文件的三项?
答案 0 :(得分:2)
你正在测试这样:
if [ $i > $arrlen ]
但你可能意味着
if (( i > arrlen ))
[
按字典顺序进行比较,((
比较数字。