繁体   English   中英

如何转义 Terraform 中 file() 的 windows 路径

[英]How to escape windows paths for the file() in Terraform

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

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

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

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

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 兼容的路径。

暂无
暂无

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

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