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

Bash中调用存储命令输出的变量失败问题求助

解决Bash脚本无法获取命令输出的问题

我来帮你搞定这个脚本的问题,你遇到的核心问题是变量赋值和命令替换的用法不对,咱们一步步修正:

问题点分析

  • 变量赋值的空格问题:Bash里变量赋值时,=两边绝对不能加空格!你写的ipAddresses = '...'会被系统当成要执行ipAddresses命令并传参数=和后面的字符串,直接就报错了。
  • 命令替换用错了方式:你用单引号把命令包起来,变量里存的只是命令文本,不是命令执行后的结果。要获取命令输出,得用$(命令)这种命令替换语法。
  • 调用变量的方式错误:最后echo的时候你写了$(ipAddresses),这会把ipAddresses当成命令去执行,但它是个变量,应该直接用$ipAddresses来引用。

修正后的完整脚本

#!/bin/bash
# 修正变量赋值和命令替换,正确获取IP地址输出
ipAddresses=$(ifconfig | awk -v OFS=": " -v RS= '$1!="lo" && split($0, a, /inet addr:/) > 1{sub(/ .*/, "", a[2]); print $1, a[2]}')
echo -e "Sus direcciones IP son: \n $ipAddresses"

额外推荐:适配现代Linux系统的版本

很多新发行版已经弃用ifconfig了,改用ip命令更稳妥,给你个替代版本:

#!/bin/bash
# 使用ip命令获取非回环IP地址
ipAddresses=$(ip addr show | awk '/inet / && !/127.0.0.1/ {split($2, a, "/"); print $NF, a[1]}')
echo -e "Sus direcciones IP son: \n $ipAddresses"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:28:20