ZBLOG

# 检查IP状态 has_ip() { if [ -z "$INTERFACE" ]; then return 1 fi if ip -o addr show "$INTERFACE" | grep -q 'inet '; then return 0 else return 1 fi } 帮我修正下这段脚本。

以下是修正后的脚本,增加了参数检查、错误处理和更清晰的输出提示:

#!/bin/bash

# 检查网络接口是否分配了IPv4地址
# 用法:has_ip <interface_name>
# 返回:0-有IP 1-无IP/参数错误

has_ip() {
    # 参数检查
    if [ $# -ne 1 ]; then
        echo "Usage: ${FUNCNAME[0]} <interface_name>" >&2
        return 1
    fi

    local interface="$1"
    
    # 检查接口是否存在
    if ! ip link show "$interface" &>/dev/null; then
        echo "Error: Interface '$interface' not found" >&2
        return 1
    fi

    # 检查IPv4地址
    if ip -4 -o addr show "$interface" | grep -q 'inet '; then
        echo "Interface '$interface' has IPv4 address"
        return 0
    else
        echo "Interface '$interface' has no IPv4 address assigned" >&2
        return 1
    fi
}

# 使用示例:
# has_ip eth0 || echo "No IP found"

改进点:

  1. 参数验证:明确要求传入接口名作为参数,而不是依赖全局变量INTERFACE
  2. 精确检查:使用-4选项明确只检查IPv4地址(避免混淆IPv6)
  3. 错误处理
    • 检查接口是否存在
    • 提供明确的错误输出到stderr(&>2)
  4. 状态反馈:添加了更详细的输出信息,方便调试和使用者理解当前状态

调用方式改为直接传递接口名作为参数,比原来的全局变量方式更符合Unix工具的使用惯例。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8240

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?