我想将两个变量rkps和rrtt与固定值进行比较,如果满足两个条件,则将计数器增加1。我已经编写了下面的shell for loop,这是正确的方法吗?
另外,无论如何要在一个for循环中初始化两个变量
count=0
for rkps in 1 2 3 4
do
for rrtt in 2 3 4 1
do
echo "rkps = $rkps"
echo "rrtt =$rrtt"
if [[ "$rkps" -ge 1 && "$rrtt" -ge 2 ]]; then
echo "Read Kb/s value greater than 1Mbps and RRTT greater than 2 msec"
count=$(($count +1))
fi
done
done
if [ $count -gt 1 ]; then
echo " issue exists"
fi
注意:我想比较rkps中的第一个值> 1&& rrtt -ge 2中的第一个值,然后是第二个,第三个值等。 -Thanks
答案 0 :(得分:3)
使用arrays:
arr_rkps=(1 2 3 4)
arr_rrtt=(2 3 4 1)
for i in 0 1 2 3
do
echo "rkps=${arr_rkps[i]}, rrtt=${arr_rrtt[i]}"
done
如果要遍历整个数组,可以使用
arr_rkps=(1 2 3 4)
arr_rrtt=(2 3 4 1)
for i in ${!arr_rkps[@]}
do
echo "rkps=${arr_rkps[i]}, rrtt=${arr_rrtt[i]}"
done
答案 1 :(得分:1)
以下脚本是@ walter-a&#39解决方案的扩展。他值得所有的信任。我们初始化了两个阵列&计算最小长度。 最后,循环遍历数组中的每个值(0到minLen)并执行检查&递增反击。
count=0
rkps_arr=(1 2 3 4)
rrtt_arr=(2 3 4 1)
minLen=$(( (${#rkps_arr[@]} < ${#rrtt_arr[@]}) ? ${#rkps_arr[@]} : ${#rrtt_arr[@]} ))
echo "MinLen:${minLen}"
for((i=0; i< minLen; i++))
do
rkps=${rkps_arr[i]}
rrtt=${rrtt_arr[i]}
echo "rkps=${rkps}"
echo "rrtt=${rrtt}"
if [[ "$rkps" -ge 1 && "$rrtt" -ge 2 ]]; then
echo "Read Kb/s value greater than 1Mbps and RRTT greater than 2 msec"
((count++))
fi
done
echo "Overall status"
if [ $count -gt 1 ]; then
echo " issue exists"
fi