需求:给点一批ip列表,一个数组或者一个文件,每行一个ip,模拟输出redis cluster的组从关系,前者是master_ip:master_port -> slave_ip:slave_port
为后续自动生成主从的配对关系做准备。
数组方式实现:
ip_list=(1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5) port=7001 len=${#ip_list[@]} for ((i=0;i<=$len-1;i++)) do if [[ $i -eq $len-1 ]];then echo "${ip_list[$i]}:$port -> ${ip_list[0]}:$port" else echo "${ip_list[$i]}:$port -> ${ip_list[$i+1]}:$port" let port=port+1 fi done
文件方式实现:
cat >b<<EOF
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
EOF
port=7001 i=1 count_rows=$(wc -l b| awk '{print $1}') last_row=$(cat b | sed -n "$"p) for ((j=1;j<=$count_rows;j++)) do up_row=$(cat b | sed -n "$i"p) if [[ "$up_row" = "$last_row" ]];then up_row=$(cat b | sed -n "$"p) next_row=$(cat b | sed -n "1"p) echo "$up_row:$port -> $next_row:$port" else up_row=$(cat b | sed -n "$i"p) let i=i+1 next_row=$(cat b | sed -n "$i"p) echo "$up_row:$port -> $next_row:$port" let port=port+1 fi done
输出结果:
1.1.1.1:7001 -> 2.2.2.2:7001 2.2.2.2:7002 -> 3.3.3.3:7002 3.3.3.3:7003 -> 4.4.4.4:7003 4.4.4.4:7004 -> 5.5.5.5:7004 5.5.5.5:7005 -> 1.1.1.1:7005