我有两个带有 IP 的阵列。我想将它们组合成第三个数组并应用升序。
#!/bin/bash
#
dbip[0]=1.1.1.1
dbip[1]=1.1.1.2
dbip[2]=1.1.1.3
dbip[3]=1.1.1.4
dbip[4]=1.1.1.5
dbip[5]=1.1.1.10
dbip[6]=1.1.1.9
ngip[0]=1.1.1.5
ngip[1]=1.1.1.6
ngip[2]=1.1.1.7
ngip[3]=1.1.1.1
ngip[4]=1.1.1.11
#I am adding the dbip array into the final one
for (( i=0; i<${#dbip[@]}; i++ ))
do
allip[$i]=${dbip[$i]}
done
#Remembering the no. of elements in the final array
var=${#allip[@]}
echo "$var"
#Adding the ngip array into the final one
for (( i=0; i<${#ngip[@]}; i++ ))
do
allip[$var+$i]=${ngip[$i]}
done
#Printing the initial order of the elements in the array
echo "size= ${#allip[@]}"
for (( i=0; i<${#allip[@]}; i++ ))
do
echo "${allip[$i]}"
done
#Sorting the array in ascending order
for (( i=0; i<${#allip[@]}; i++ ))
do
for (( j=$i; j<${#allip[@]}; j++ ))
do
if [ allip[$i] \> allip[$j] ];
then
aux=${allip[$i]}
allip[$i]=${allip[$j]}
allip[$j]=$aux;
fi
done
done
echo "###############################"
#Printing the final form of the array
for (( i=0; i<${#allip[@]}; i++ ))
do
echo "${allip[$i]}"
done
问题是输出没有以数字或字典方式排序。
输出:
1.1.1.1
1.1.1.11
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.1.1.5
1.1.1.10
1.1.1.9
1.1.1.5
1.1.1.7
1.1.1.6
输出应该是这样的:
1.1.1.1
1.1.1.1
1.1.1.2
1.1.1.3
.......
1.1.1.10
1.1.1.11
或者像这样
1.1.1.1
1.1.1.1
1.1.1.10
1.1.1.11
所以我可以稍后删除重复项。
我如何在 bash 中以纯编程方式做到这一点。没有管道。
请注意,IP 可以来自不同的类:10.55.72.190、10.55.70.1、10.51.72.44 等。