我们面临一个问题,我们需要在 config-file.yml
之一中配置路径。它是 CLI 脚本的路径。我们面临 UNIX/Windows 的一个已知的老问题“目录分隔符” - /
- \
。现在我们只想为两个操作系统配置一条路径。
目前我们需要根据当前使用的操作系统手动切换路径。这始终破坏了我们的 VCS 处理/应用程序稳定性。
Unix
bin_path: path/to/script
窗口
bin_path: path\to\script
是否有类似于 PHP superglobal 已知的占位符之类的东西DIRECTORY_SEPARATOR
?我们专注于一个不需要替换脚本中分隔符的解决方案。在使用 yaml 文件时,我多次陷入这个问题。
最佳答案
YAML 是一种数据描述语言,因此不支持从外部流入 YAML 文档的数据(即可以在文档中使用的变量)。从理论上讲,您唯一可以做的就是以一种允许您随后选择实际想要的值的方式构建 YAML 文档。示例:
bin_path:
unix: path/to/script
windows: path\to\script
然后,在加载文件时,您可以选择适合当前操作系统的路径。然而,与在 Windows 上简单地将 /
替换为 \
的方法相比,这似乎很复杂。
另一种解决方案是仅使用为 Windows 或 UNIX 配置的一个路径,如下例所示。这样你就不需要为每个操作系统配置特定的路径。
bin_path: path/to/script
例如PHP,您可以使用 realpath 在应用程序内标准化您的通行证。
realpath('path/to/script'); //creates an absolute path including OS based directory separators
关于php - 如何动态处理 yaml 文件中的 UNIX/Windows 目录分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690862/