如何在shell中处理来自for循环的值

时间:2018-01-08 10:30:18

标签: bash shell

我必须执行这样的逻辑。 我有一个阵列。 shell中的表达式

[(first no + arrlen) - ( index +1 ) - ge 10 ]

我的代码是这样的,但它无法正常工作

#!/bin/bash
array=(4 5 6 7 8 9)
for i in ${array[@]}
do
echo $i
done
echo "${#array[@]}"
l=${#array[@]}


    count=0
    for (( i=0; i < ${#array[@]}; i++ ))

     do
       if [ ($(`expr $i + $l`) - $(`expr ${!array[@]} + 1`)) -ge 10 ]
            then
            count=`expr $count + 1`
            else
            echo
       fi
    done

1 个答案:

答案 0 :(得分:1)

您的代码可能如下所示:

#!/bin/bash

array=(4 5 6 7 8 9)
for i in "${array[@]}"; do
    echo "$i"
done

length=${#array[@]}
first=${array[0]}
count=0
for (( i=0; i < length; i++ )); do
    if (( (first + length) - (i + 1) >= 10 )); then
        ((count++))
    else
        echo "something"
    fi
done
  1. 请勿使用expr,请将(( ))用于算术表达式
  2. 引用扩展:"$i""${array[@]}",...
  3. ${!array[@]}扩展为数组的所有索引,而不是当前索引