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

如何编写命令失败自动切换备选的公网IP获取Bash脚本

Bash 单命令失败自动执行备选命令实现

核心逻辑

Bash 中所有命令执行完成后都会返回0~255的退出状态码:返回0代表执行成功,非0代表执行失败。配合 Bash 自带的||短路运算符即可实现「前序命令失败才执行后续命令」的需求。

针对获取公网IP场景的最简用法

直接在终端执行即可:

curl -s www.ifconfig.me || curl -s http://icanhazip.com

参数说明:-s为curl的静默模式参数,会屏蔽进度条、错误提示等冗余输出,仅返回接口的响应内容。

可复用脚本版本

可以将逻辑封装为独立脚本,方便后续调用:

#!/bin/bash

# 尝试第一个IP获取源
public_ip=$(curl -s --connect-timeout 3 www.ifconfig.me)

# 第一个源失败时尝试备选源
if [ -z "$public_ip" ]; then
    public_ip=$(curl -s --connect-timeout 3 http://icanhazip.com)
fi

# 输出最终结果
echo "当前公网IP为:$public_ip"

脚本说明

  • 额外增加了--connect-timeout 3参数,避免单站点不通时长时间等待,3秒无响应就判定为失败
  • 支持后续扩展更多备选源,只要在判断逻辑后追加对应命令即可
  • 最终获取的IP存储在public_ip变量中,可直接用于后续其他业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:48:05