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

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

  •  
  •   alvin666 · 2018-12-08 00:16:27 +08:00 · 1206 次点击
    这是一个创建于 1964 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    kiwi95
        1
    kiwi95  
       2018-12-08 00:27:28 +08:00 via Android   ❤️ 1
    ${#var} 是变量长度,字符串的长度或者数组元素的个数, ${arr[*]} 是数组所有元素拼成字符串
    alvin666
        2
    alvin666  
    OP
       2018-12-08 00:30:17 +08:00
    @kiwi95 那 echo ${#variable[*]}呢?为什么一个字符串 ipaddr 也能用 for 拆开?我该怎么取到这两个拆开的值?用${ipaddr[0]}取到的是和$ipaddr 一样的结果
    kiwi95
        3
    kiwi95  
       2018-12-08 08:24:36 +08:00 via Android   ❤️ 1
    shell 中 ${are[0]} 和 ${arr} 返回的都是数组的第一个元素,这个文档有规定的
    alvin666
        4
    alvin666  
    OP
       2018-12-08 09:53:31 +08:00 via Android
    @kiwi95 我知道,但为什么明明长度为 1 的数组或者字符串 ipaddr,能用 for 拆开??
    kiwi95
        5
    kiwi95  
       2018-12-08 10:21:04 +08:00 via Android
    @alvin666 当然可以
    alvin666
        6
    alvin666  
    OP
       2018-12-08 10:49:04 +08:00
    @kiwi95 但是我又不能用${ipaddr[0]}和 ${ipaddr[1]}取出来这两个值???我想要取到这两个,该怎么做
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2854 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:32 · PVG 23:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.