首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
拉钩
V2EX  ›  问与答

shell 小白问一个智障问题(回复有谢)

  •  
  •   alvin666 · 8 天前 · 613 次点击

    Snipaste_2018-12-08_00-11-59.jpg

    其中 variable 用 variable=(d s w w w)定义,ipaddr 用 Google 到的这一句定义

    ipaddr=$(ip addr | awk '/^[0-9]+: / {}; /inet.global/ {print gensub(/(.)/(.*)/, "\1", "g", $2)}')

    所以 ipaddr 到底是一个数组还是个字符串?长度明明是 1 为什么还能用 for 打印出来?获取到的 ipaddr 包含了我的 ipv4 和 ipv6 地址,我想将这两个值分别取出来,该怎么做?

    6 回复  |  直到 2018-12-08 10:49:04 +08:00
        1
    kiwi95   8 天前 via Android   ♥ 1
    ${#var} 是变量长度,字符串的长度或者数组元素的个数, ${arr[*]} 是数组所有元素拼成字符串
        2
    alvin666   8 天前
    @kiwi95 那 echo ${#variable[*]}呢?为什么一个字符串 ipaddr 也能用 for 拆开?我该怎么取到这两个拆开的值?用${ipaddr[0]}取到的是和$ipaddr 一样的结果
        3
    kiwi95   8 天前 via Android   ♥ 1
    shell 中 ${are[0]} 和 ${arr} 返回的都是数组的第一个元素,这个文档有规定的
        4
    alvin666   8 天前 via Android
    @kiwi95 我知道,但为什么明明长度为 1 的数组或者字符串 ipaddr,能用 for 拆开??
        5
    kiwi95   8 天前 via Android
    @alvin666 当然可以
        6
    alvin666   8 天前
    @kiwi95 但是我又不能用${ipaddr[0]}和 ${ipaddr[1]}取出来这两个值???我想要取到这两个,该怎么做
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2214 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 15:02 · PVG 23:02 · LAX 07:02 · JFK 10:02
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1