我有一个 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_func
和 pass 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"
最佳答案
在 bash 中,您可以使用存储在 extglob
shell 选项下的变量中的模式:
shopt -s extglob
case "$ip_addr" in
@($column2)) check_func "$column3" "$column4" ;;
*) echo Unknown. ;;
esac
要填充列,只需使用 read
并将 Internal Field Separator 设置为 ,
:
#! /bin/bash
shopt -s extglob
IFS_backup=$IFS
IFS=,
while read -r column1 column2 column3 column4 ; do
...
done < file.csv
关于linux - 在 Linux Bash 脚本中调用基于 ip 地址的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761438/