前言
将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'