如何在bash脚本中基于ip地址切换端口?
我试过这个:
#!/bin/bash
servers=(***.**.**.24 ***.**.**.66 ***.**.**.59 ***.**.**.67 ***.**.**.58 ***.**.**.70 ***.**.**.68)
case "$servers" in
***.**.**.24)
port=28260
;;
***.**.**.58)
port=27260
;;
***.**.**.59)
port=27260
;;
***.**.**.66)
port=28270
;;
***.**.**.67)
port=27290
;;
***.**.**.68)
port=28260
;;
***.**.**.70)
port=28260
;;
esac
但它只返回第一个端口。
感谢任何帮助。 :)
答案 0 :(得分:1)
问题是servers
是一个包含多个元素的数组,而$servers
只是扩展到第一个元素。
如果要遍历数组并为每个条目打印一些内容,可以使用:
#!/bin/bash
servers=(***.**.**.24 ***.**.**.66 ***.**.**.59 ***.**.**.67 ***.**.**.58 ***.**.**.70 ***.**.**.68)
for host in "${servers[@]}"
do
case "$host" in
***.**.**.24)
port=28260
;;
***.**.**.58)
port=27260
;;
***.**.**.59)
port=27260
;;
***.**.**.66)
port=28270
;;
***.**.**.67)
port=27290
;;
***.**.**.68)
port=28260
;;
***.**.**.70)
port=28260
;;
esac
echo "$host:$port"
done