shell关于以.分离IP为四个段并调用的几个思路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell关于以.分离IP为四个段并调用的几个思路相关的知识,希望对你有一定的参考价值。
##思路1
采用awk把IP分离出4段,然后通过for循环调用
#!/bin/bash
START_IP="192.168.2.1"
j=1
for i in `echo $START_IP|awk -F. ‘{print $1,$2,$3,$4}‘`
do
eval IP$j=$i
echo "$IP"$j""
j=$[j+1]
done
这个思路主要难点
1.IP$j=$i
执行过程中会报错,只有在加上eval
后,才会正常执行
2.echo "$IP"$j""
,变量内部调用变量,语法问题
##思路2
采用awk把IP分离出4段,赋值给数组变量,然后再将数据变量赋值给四个变量
#!/bin/bash
#step1_advanced
echo -e " 33[31mPlease input start IP 33[0m"
read -e START_IP
IP=(`echo $START_IP|sed ‘s/./ /g‘`)
IP1=`echo ${IP[0]}`
IP2=`echo ${IP[1]}`
IP3=`echo ${IP[2]}`
IP4=`echo ${IP[3]}`
echo -e " 33[31mPlease input node Numbers 33[0m"
read -e NODE_NUMBERS
cat > hosts<<- END
$IP1.$IP2.$IP3.$IP4 mds1
$IP1.$IP2.$IP3.$[IP4+1] mds2
END
j=$[NODE_NUMBERS-1]
for((i=1;i<j;i++))
do
echo "$IP1.$IP2.$IP3.$[IP4+1+i] oss$[i+1]" >> hosts
done
这个思路主要难点在在于
echo "$IP1.$IP2.$IP3.$[IP4+1+i] oss$[i+1]" >> hosts
语法格式的注意
##思路3
采用awk把IP分离出4段,赋值给数组变量,然后直接调用数组的变量
#!/bin/bash
#step1_advanced
echo -e " 33[31mPlease input start IP 33[0m"
read -e START_IP
IP=(`echo $START_IP|sed ‘s/./ /g‘`)
echo -e " 33[31mPlease input node Numbers 33[0m"
read -e NODE_NUMBERS
cat > hosts<<- END
${IP[0]}.${IP[1]}.${IP[2]}.${IP[3]} mds1
${IP[0]}.${IP[1]}.${IP[2]}.$[IP[3]+1] mds2
END
j=$[NODE_NUMBERS-1]
for((i=1;i<j;i++))
do
echo "${IP[0]}.${IP[1]}.${IP[2]}.$[IP[3]+1+i] oss$[i+1]" >> hosts
done
这个思路主要难点同样在于
echo "${IP[0]}.${IP[1]}.${IP[2]}.$[IP[3]+1+i] oss$[i+1]" >> hosts
语法格式的注意
以上是关于shell关于以.分离IP为四个段并调用的几个思路的主要内容,如果未能解决你的问题,请参考以下文章