gpt4 book ai didi

linux - 使用 shell 脚本 (bash) 查找我的系统的特定接口(interface)的 IP 地址

转载 作者:IT王子 更新时间:2023-10-29 01:01:31 24 4
gpt4 key购买 nike

我试图通过 shell 脚本找到我自己系统的 ip 地址,并写入我的脚本内容的文本

#!/bin/bash

wifiip=$(ip addr | grep inet | grep wlan0 | awk -F" " '{print $2}'| sed -e 's/\/.*$//')

eth0ip=$(ip addr | grep inet | grep eth0 | awk -F" " '{print $2}' | sed -e 's/\/.*$//')

if [ "$eth0ip" == "0" ]; then

echo "$eth0ip" | grep [0-9]$ > /home/pi/att/ip.txt

else

echo "$wifiip" | grep [0-9]$ > /home/pi/att/ip.txt

fi

并尝试做一些事情,比如如果一个接口(interface)没有打开,在 ip.txt 中打印另一个 ip

但它正在给予

ip.sh: 14: [: unexpected operator 

最佳答案

让我们先清理一下您的代码。当您已经在使用 awk 时,您不需要一打不同的命令和管道链。这:

wifiip=$(ip addr | grep inet | grep wlan0 | awk -F" " '{print $2}'| sed -e 's/\/.*$//')

可以简单的写成这样:

wifiip=$(ip addr | awk '/inet/ && /wlan0/{sub(/\/.*$/,"",$2); print $2}')

但是你的整个脚本可以写成一个 awk 命令。

我需要你用 ip addr 命令的一些示例输出更新你的问题,给定输入你想要的 awk 命令的输出,并更清楚地解释你想做什么为了向您展示正确的书写方式,但它可能是这样的:

ip addr | awk '
/inet/ { ip[$NF] = $2; sub(/\/.*$/,"",ip[$NF]) }
END { print ( "eth0" in ip ? ip["eth0"] : ip["wlan0"] ) }
' > /home/pi/att/ip.txt

关于linux - 使用 shell 脚本 (bash) 查找我的系统的特定接口(interface)的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com