遍历缺少元素的数组,并在shell中报告缺少的元素

时间:2015-11-22 12:27:51

标签: arrays bash shell

考虑理想的数组:

0 1 2 3 4 5

说出我在一次执行中得到的数组:

0 1 3 5

我的脚本应该显示2和4缺失。 到目前为止我的代码:

#!/bin/bash
## declare an array variable
a=`cat read/Array/values/from file/`
declare -a simpleArray=( $a )
# get length of an array
arraylength=${#simpleArray[@]}
j=0
while [ $j -lt $arraylength ]
do
# use for loop to read all values and indexes
for ((i=1;i< ${arraylength}+1;i++));
do
y=${simpleArray[$i-1]}
echo $y'current value'
if [ y == j  ]
then 
echo 'present'
else
echo $j'not present'
j=$((j+1))
fi
done
echo 'for loop close'
done
echo 'while loop close'

编辑代码

#!/bin/bash
a=`cat /home/muzammilm/textdate.txt`
simpleArray=( 1 2 6 )
j=0;
i=0;
arraylength=${#simpleArray[@]}
echo $arraylength
while [ $j != 6 ]
do
for (( i=0; i< $arraylength; i++ ))
do
if [ ${simpleArray[$i]} = $j ]
then
break
elif [ ${simpleArray[$i]} > $j ]
then
echo $j'not present'
break;
fi
done
j=$((j+1))
done

这给了我一个错误,虽然当ip数组只包含两个元素

时它可以正常工作

1 个答案:

答案 0 :(得分:1)

此测试始终为false

 if [ y == j  ]

因为它是常量字符串“y”和“j”的字符串比较。你的意思是

 if [ $y = $j  ]

代替? (是的,只有一个=符号是正确的相等测试。)