linux - 在 Linux Bash 脚本中调用基于 ip 地址的函数

标签 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"

最佳答案

在 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/

相关文章:

scala - 以编程方式减少 spark shell 中的日志

windows - 如何在命令行上将文件(不是内容)复制/剪切到 Windows 中的剪贴板?

shell - (shell脚本文件)pm2 : command not found in crontab task

linux - Util 用于 Linux 上的轻量级 Web 服务器

linux - 在哪里可以找到旧版 Linux 内核 (2.6.x) 的特定文件?

linux - 检查 Web 应用程序是否已启动

bash - 恢复以前的值或取消设置环境变量

linux - 哪些主要的 *nix 操作系统适合学习 *nix 编程?

bash - 如何使用 bash 更新文件行?

Linux 将文件重命名为 dirname