Linux下输出未使用网络接口的Shell脚本优化:添加n+变量需求
改进版:输出未使用网络接口并存储到变量的Shell脚本
原脚本通过筛选无IPv4地址的网络接口实现输出,下面是添加变量存储结果的改进版本,既保留直接输出功能,又能将结果存入变量供后续脚本调用:
字符串变量版本(简单直接)
#!/bin/bash # 初始化变量存储未使用的网络接口 unused_interfaces="" # 遍历系统所有网络接口 for interface in $(ip addr show | awk '/^[0-9]+:/ {print $2}' | tr -d :) do # 检查接口是否未配置IPv4地址 if ! ip addr show "$interface" | awk '/inet / {print $2}' | grep -q .; then # 直接输出未使用的接口 echo "$interface" # 将接口追加到变量中,用空格分隔 unused_interfaces="$unused_interfaces $interface" fi done # 可选:输出变量存储的结果,用于验证或后续使用 echo "未使用接口列表(已存入变量unused_interfaces):$unused_interfaces"
数组变量版本(更健壮,适合复杂场景)
如果需要处理特殊命名的接口(比如含空格的接口名),推荐用数组存储,避免字符串分割问题:
#!/bin/bash # 初始化数组存储未使用的网络接口 unused_interfaces=() # 遍历系统所有网络接口 for interface in $(ip addr show | awk '/^[0-9]+:/ {print $2}' | tr -d :) do # 检查接口是否未配置IPv4地址 if ! ip addr show "$interface" | awk '/inet / {print $2}' | grep -q .; then # 将接口加入数组 unused_interfaces+=("$interface") fi done # 直接输出数组中的所有未使用接口 printf "%s\n" "${unused_interfaces[@]}" # 可选:验证数组内容 # echo "数组存储的未使用接口:${unused_interfaces[@]}"
说明
- 新增的
unused_interfaces变量(或数组)会自动收集所有未使用的网络接口 - 直接输出功能保留,同时变量可用于后续脚本逻辑(比如批量禁用、配置这些接口)
- 判定“未使用”的逻辑和原脚本一致:无IPv4地址的接口即为未使用
内容的提问来源于stack exchange,提问作者walx4r
相关产品推荐
相关产品推荐

