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  "\033[31mPlease input start IP\033[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  "\033[31mPlease input node Numbers\033[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  "\033[31mPlease input start IP\033[0m"
read -e START_IP
IP=(`echo $START_IP|sed 's/\./ /g'`)
echo -e  "\033[31mPlease input node Numbers\033[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

语法格式的注意

转载于:https://blog.51cto.com/8460152/2159610

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值