微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何读取文件并对其内容进行替换?

如何解决如何读取文件并对其内容进行替换?

我有一个很长的字符串,我想将其提取一个单独的文件中。

prepare = lib.hm.dag.entryAfter ["writeBoundary"] '' very long script with ${...} '';

我可以用 builtins.readFile 读取它,但它不能代替 ${...} nix 占位符。

如何从文件读取字符串并解析其中的 nix 变量?

解决方法

您可以使用 substitute 系列的 bash 函数(请参阅 Nixpkgs manual)或使用 substituteAll Nix 函数来生成执行替换的派生。

substituteAll { src = ./sample.sh; inherit bash; hi = hello; }

sample.sh

#!@bash@/bin/bash
@hi@

结果:

$ nix repl <nixpkgs>

nix-repl> substituteAll { src = ./sample.sh; inherit bash; hi = hello; }
«derivation /nix/store/7klv763a0ipgvwf3j84aazkzx2d5rljz-sample.sh.drv»

nix-repl> :b substituteAll { src = ./sample.sh; inherit bash; hi = hello; }

this derivation produced the following outputs:
  out -> /nix/store/v03hpzw9ykrbyqpmalnijnyibq3waqhw-sample.sh

nix-repl> 

/nix/store/v03hpzw9ykrbyqpmalnijnyibq3waqhw-sample.sh

#!/nix/store/a4yw1svqqk4d8lhwinn9xp847zz9gfma-bash-4.4-p23/bin/bash
/nix/store/jmmw0d3nmklwafcwylvrjb9v69wrbcxf-hello-2.10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。