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

2018-12-08 00:16:27 +08:00
 alvin666

其中 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 地址,我想将这两个值分别取出来,该怎么做?

1266 次点击
所在节点    问与答
6 条回复
kiwi95
2018-12-08 00:27:28 +08:00
${#var} 是变量长度,字符串的长度或者数组元素的个数, ${arr[*]} 是数组所有元素拼成字符串
alvin666
2018-12-08 00:30:17 +08:00
@kiwi95 那 echo ${#variable[*]}呢?为什么一个字符串 ipaddr 也能用 for 拆开?我该怎么取到这两个拆开的值?用${ipaddr[0]}取到的是和$ipaddr 一样的结果
kiwi95
2018-12-08 08:24:36 +08:00
shell 中 ${are[0]} 和 ${arr} 返回的都是数组的第一个元素,这个文档有规定的
alvin666
2018-12-08 09:53:31 +08:00
@kiwi95 我知道,但为什么明明长度为 1 的数组或者字符串 ipaddr,能用 for 拆开??
kiwi95
2018-12-08 10:21:04 +08:00
@alvin666 当然可以
alvin666
2018-12-08 10:49:04 +08:00
@kiwi95 但是我又不能用${ipaddr[0]}和 ${ipaddr[1]}取出来这两个值???我想要取到这两个,该怎么做

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/515524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX