在Linux Bash Script中调用基于ipaddress的函数

时间:2018-04-10 19:22:22

标签: linux bash shell awk sed

我有一个test.csv文件,如下所示

LOC,IP,D1,D2
abc1,10.11|10.12|10.13|10.14|10.15|10.16,10.11.1.1,11.1.1.23
abc2,12.1|10.15|10.116|10.127|10.110,11.110.8.25,11.11.5.3
abc3,13.2|13.2,10.1.4.50,10.2.7.3

我想在目标服务器上计算Ipaddress,然后检查ipaddress是否与test.csv文件中的值匹配。如果匹配,那么我想将check_funcpass values of D1 and D2称为该函数。

到目前为止,我可以使用以下命令

计算ipaddress
host=`uname -n'`
ip_addr=`host $host | awk '{print $NF}'`

现在,我想做类似下面的事情:

case $ip_addr in
      10.11|10.12|10.13|10.14|10.15|10.16)
             check_func "10.11.1.1" "11.1.1.23"

1 个答案:

答案 0 :(得分:1)

在bash中,您可以使用存储在extglob shell选项下的变量中的模式:

shopt -s extglob
case "$ip_addr" in
    @($column2)) check_func "$column3" "$column4" ;;
    *) echo Unknown. ;;
esac

要填充列,只需使用内部字段分隔符设置为read的{​​{1}}:

,