【问题标题】:How to escape windows paths for the file() in Terraform如何在 Terraform 中转义 file() 的 Windows 路径
【发布时间】:2023-01-13 11:56:03
【问题描述】:

如果我转义反斜杠并告知“f”不是有效的转义序列选择器,我会收到错误消息,指出无法在 C:\file\dir\location 找到文件。

setup_script = file(C:\\Users\\me\\folder\\file.sh

我尝试过转义 (\)、正斜杠 (/)、双转义 (\)。

【问题讨论】:

    标签: windows terraform escaping backslash


    【解决方案1】:

    您的问题中显示的表达式在更多方面无效,而不仅仅是文件名:文件名不在引号中,并且缺少 file 函数调用的右括号 )

    Terraform 模块通常不应在其中包含硬编码的绝对路径,因为这使得它们只能在一台特定计算机上工作,但如果您想要写一个绝对路径那么典型的方法是使用正斜杠:

      setup_script = "c:/Users/me/folder/file.sh"
    

    您也可以使用具有相同含义的转义反斜杠 \ 来编写它,但这不是那么可读,因此正斜杠是通常的约定。

    模块通过与 path.module 连接来引用其自己目录中的文件更为常见:

      setup_script = "${path.module}/file.sh"
    

    如果你这样做,那么你必须使用正斜杠,因为 path.module 结果也将使用正斜杠,Windows 要求整个路径在使用反斜杠或正斜杠方面保持一致。请注意,上面的 path.module 示例也是可移植的:此结果在 Unix 系统上也有效,因为 Terraform 随后将为 path.module 生成一个 Unix 兼容的路径。

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2022-11-16
      • 2022-01-19
      • 2014-01-16
      • 1970-01-01
      • 2011-02-15
      • 2019-01-08
      • 2017-03-20
      • 1970-01-01
      相关资源
      最近更新 更多