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

如何将命令输出存入Bash变量并自动获取Linux服务器网络接口

Bash脚本获取网络接口与命令输出存变量方法

一、将命令输出存入Bash变量的基础方法

在Bash里把命令输出存到变量有两种常用写法,推荐第二种(支持嵌套、可读性更强):

# 写法1:反引号包裹命令
command_output=`ip a`

# 写法2:$()包裹命令(更推荐)
command_output=$(ip a)

存好后直接用变量名调用即可,比如执行echo $command_output就能打印命令的输出内容。

二、自动获取网络接口的实用方式

根据不同需求,有几种可靠的提取方式:

1. 获取带默认路由的主网卡(最常用)

主网卡是服务器对外通信的核心接口,通过默认路由提取最准确:

main_interface=$(ip route show default | awk '/default/ {print $5}')
echo "主网卡接口:$main_interface"

原理:ip route show default输出默认路由信息,awk提取其中第5个字段就是接口名称。

2. 获取所有活跃的非回环接口

如果需要筛选所有处于up状态、排除回环(lo)的接口:

active_interfaces=$(ip link show up | grep -v lo | awk -F': ' '{print $2}' | cut -d'@' -f1)
echo "活跃非回环接口:$active_interfaces"

原理:

  • ip link show up列出所有启用状态的接口
  • grep -v lo排除回环接口
  • awk分割冒号提取接口名部分
  • cut处理带@的接口名(比如enp0s3@if2),只保留前面的主接口名

3. 获取带有IPv4地址的非回环接口

如果要找已分配IP的接口:

ip_interface=$(ip addr show | grep -v lo | grep 'inet ' | awk '{print $NF}')
echo "带IPv4的接口:$ip_interface"

原理:grep 'inet '筛选出有IPv4地址的行,$NF取该行最后一个字段(即接口名)

处理多接口场景

如果服务器有多个符合条件的接口,要取第一个的话,追加head -n1即可:

first_active_interface=$(ip link show up | grep -v lo | awk -F': ' '{print $2}' | cut -d'@' -f1 | head -n1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:36:35