【shell读取config配置文件中的IP】


前言

将config配置文件中的IP值全部按顺序展示出来,可供选择,并提取所选择的IP值,可作为变量


1.实现读取config文件下的IP

代码如下(demo.sh):

#!/bin/bash
# 配置文件绝对路径
config_file="D:/test/testcases/config.ini"

#获取所选择的行对应的IP地址
function getSelectedRow() {
    sed -n '/region/,$p' $config_file | sed -n '2,$p' | while read line;
do
  if [[ $line == ip* ]];
    then
      let j=i++;
      echo "'$j':"$line;
    else
      echo $line;
  fi;
done | sed -n /"'$1':"/p
}


# 打印config文件中的IP信息
i=0
echo "------------------------------"
# 将config文件中[region]后面的内容全部按行输出
sed -n '/region/,$p' $config_file | sed -n '2,$p' | while read line;
do
  if [[ $line == ip* ]];
    then
      let j=i++;
      echo "[$j]: "$line;
    else
      echo $line;
  fi;
done
echo "------------------------------"
read -p "请输入选择的IP序号:" inputNum

# 提取对应行的IP值
selected_ip=$(getSelectedRow $inputNum)

# selected_ip#*= 将config文件中ip=,之前的内容都删除,只保留值
echo "您选择的IP为:${selected_ip#*=}"0

2.config.ini文件

[region]
ip=1.2.2.255
ip=1.4.4.192
ip=1.6.89.33
ip=1.2.1.89
ip=1.0.31.255

3.运行demo.sh

------------------------------
[0]: ip=1.2.2.255
[1]: ip=1.4.4.192
[2]: ip=1.6.89.33
[3]: ip=1.2.1.89
------------------------------
请输入选择的IP序号:0
您选择的IP为:1.2.2.255

4.shell中sed -n 管道符的基本操作

例如:文件名为test11,对test11进行相关操作

sed -n : 将文件中经过sed处理的行展示出来

#显示test11文件中的第2行
sed -n '2p' test11  

#显示test11文件中的第1行到第五行
sed -n '1,5p' test11  

#显示test11文件中的第3行到最后一行
sed -n '3,$p' test11  

#显示test11文件中的最后一行
sed -n '$p' test11  

#显示test11文件中包含ip关键字的所有行
sed -n '/ip/p' test11  

#先显示test11文件中包含region关键字的所有行,并将输出作为第二个sed的输入文件
sed -n '/region/,$p' test11 | sed -n '2,$p'  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值