繁体   English   中英

将ASCII码格式化为terraform中的ASCII字符

[英]format ASCII number to ASCII Character in terraform

在 terraform 中,有没有办法将类型为 int 的 ASCII 值格式化为相应的 ASCII 字符作为 char?

terraform 版本:v0.13.7

device_name = "${format ("xvd%c", 98)}" #xvdb

我尝试使用 %c 但抛出如下错误

错误:function 调用出错

在 ec2.tf 第 82 行,在资源“aws_volume_attachment”“app”中:82:device_name =“${format(“xvd%c”,98)}”#xvdb

调用 function“格式”失败:偏移量 3 处的“%c”中不支持格式动词“c”。

Terraform 没有直接的 function 用于将数字解释为任何特定字符编码中的字符。 Terraform 语言没有公开字符串在 memory 中是如何编码的细节。

您的示例表明您的目标是将 map 从 integer 转换为一个字母,用作 EC2 卷附件的设备名称。 我认为满足 Terraform 需求的最直接答案是手写(或者,如果您愿意,使用一次性脚本生成)查找表:

locals {
  device_names = tolist([
    "xvda",
    "xvdb",
    "xvdc",
    "xvdd",
    # (and so on for however many devices you expect to need to support,
    # presumably up to "z" at the worst)
  ])
}

一个更“棘手”的选项——我个人不会使用它,因为它看起来不透明并且未来的读者更难理解——将生成一些 JSON,其中包含所需字符的转义序列,然后解析该 JSON:

jsondecode(format("\"\\u%04x\"", 98))

这实际上使用 Unicode 编码值而不是 ASCII 编码值,但前 128 个 ASCII 值与前 128 个 Unicode 值匹配,因此只要您只包含 0-127 范围内的值,这应该是等效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM