• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
songzy-运维之旅
初级运维自我学习磨练
博客园    首页    新随笔    联系   管理    订阅  订阅
shell获取ip地址

1、以函数获取ip的案例

1)构建函数
function get_ip(){函数体 }
这个function关键字用于定义一个名为get_ip的函数

2)解析默认路由
array=($(echo "$route" | tr ' ' ' '))

array=($(/usr/sbin/ip route | tr ' ' ' '))


这个命令将route变量的内容转换为一个数组array,tr ' ' ' ' 用于将多个连续的空格替换为单个空格,确保数组的分割正确

ps:这里插入一个列出系统路由表的脚本,因为我想看array排列后的内容,其中/usr/sbin/ip route 可以用$route代替,但我的虚拟机操作系统是openeuler2203的x86,执行echo "$route"无任何输出

点击查看代码
array=($(/usr/sbin/ip route | tr ' ' ' '))
for element in "${array[@]}";do
    echo "$element";
done
@:当用在数组变量的上下文中时,@ 代表数组中的所有元素。在循环中使用 @ 可以遍历数组的每个元素。

3)查找设备名称
dev=""
初始化一个空字符串dev,用于存储找到的设备名称
for i in $(seq 0 $(( ${#array[@]} -1)));do
使用for循环遍历数组array的索引,生成从0到数组长度减1的序列,确保遍历数组的每个元素
if [[ "${array[i]}" == "dev" ]];then
使用 if 语句检查当前元素是否等于 "dev"。[[ "${array[i]}" == "dev" ]] 是条件表达式,用于比较字符串。注意,条件表达式以 [[ 开始,以 ]] 结束,并且中间有空格

点击查看代码
#!/bin/bash

dev=""
for i in $(seq 0 $(( ${#array[@]} - 1))); do
    if [[ "${array[i]}" == "dev" ]]; then
        dev="${array[i+1]}"
        break
    fi
done
echo "Device: $dev"
posted on 2025-01-15 14:12  宋之一  阅读(13)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3