You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本变量拼接疑问:网卡MAC遍历脚本无法运行

解决你的网卡MAC地址脚本问题

嘿,你的脚本出问题的原因其实不是变量拼接,而是数组赋值的方式错啦!我给你拆解一下问题,再给你修正后的写法:

原脚本的核心问题

你用ifaces=$(ls /sys/class/net)把ls的结果赋值给变量时,它会把所有网卡名拼成一个单一字符串,而不是数组。所以当你用for i in "${ifaces[@]}"循环时,它只会把整个字符串当成一个元素来处理,自然没法逐个遍历网卡名。

修正方法一:正确赋值数组

把赋值改成数组形式,这样ifaces就会把每个网卡名作为独立元素:

ifaces=($(ls /sys/class/net))
for i in "${ifaces[@]}"
do
    mac=$(cat /sys/class/net/$i/address)
    echo "$i: $mac"
done

修正方法二:更安全的遍历方式(推荐)

其实没必要用ls,直接遍历/sys/class/net下的目录条目更可靠(避免网卡名有特殊字符时出问题,虽然网卡名一般不会有,但这是更好的脚本习惯):

for i in /sys/class/net/*
do
    # 从路径里提取纯网卡名
    iface_name=${i##*/}
    mac=$(cat "$i/address")
    echo "$iface_name: $mac"
done

这两种写法都能正常输出每个网卡对应的MAC地址啦~

内容的提问来源于stack exchange,提问作者toast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:25:32