Terraform切片操作:表达式split("/", str)[0]中[0]的作用解析
Terraform 表达式
split("/", str)[0] 运行逻辑详解 整个表达式是先后顺序执行的:先运行split函数拿到结果,再对返回结果做取值操作,两部分的具体逻辑如下:
split("/", str) 的输出规则
你已经知道split会按斜杠分割字符串,这里需要明确的是,它的返回值不是单个字符串,是存着所有分割结果的字符串列表。
举个实际用的例子,待分割的字符串是阿里云OSS的对象路径"my-bucket/dev/nginx/config.conf",执行完split("/", "my-bucket/dev/nginx/config.conf")后,得到的列表结构是:["my-bucket", "dev", "nginx", "config.conf"]
末尾[0]的具体作用
这是Terraform列表的通用索引取值语法,没有任何特殊逻辑:
- Terraform 的列表索引从0开始计数,列表里的第一个元素对应索引0,第二个元素对应1,依次往后排
- 表达式末尾的
[0],就是直接对前一步split返回的列表,取出索引为0的第一个元素
还是拿上面的例子走一遍全流程:
- 传入待分割字符串
"my-bucket/dev/nginx/config.conf" - split 按斜杠切分后,得到包含4个元素的字符串列表
- 用
[0]取列表的第一个元素,整个表达式最终的返回值就是"my-bucket"
实际使用的注意事项
- 如果待分割字符串本身以斜杠开头,比如
"/var/log/syslog",split后会得到列表["", "var", "log", "syslog"],此时[0]取到的是空字符串,不是预期的首个路径段 - 如果split返回的列表为空,直接调用
[0]会触发索引越界的运行错误
内容的提问来源于stack exchange,提问作者Lucky
相关产品推荐
相关产品推荐

