buildkite/interpolate
GitHub: buildkite/interpolate
一个用 Go 编写的 POSIX 参数扩展库,用于在字符串中按照 shell 语法进行环境变量插值。
Stars: 36 | Forks: 6
# Interpolate
[](https://buildkite.com/buildkite/interpolate)
[](https://godoc.org/github.com/buildkite/interpolate)
一个用于在字符串中扩展环境变量参数(如 `${BLAH}` 或 `$BLAH`)的 golang 库。它是 [POSIX 参数扩展](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02) 的一个实现,外加一些你在 [像 bash 这样的](https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html) shell 脚本环境中期望的其他基本操作。
## 安装说明
```
go get -u github.com/buildkite/interpolate
```
## 用法
```
package main
import (
"github.com/buildkite/interpolate"
"fmt"
)
func main() {
env := interpolate.NewSliceEnv([]string{
"HELLO_WORLD=🦀",
})
output, _ := interpolate.Interpolate(env, "Buildkite... ${HELLO_WORLD} ${ANOTHER_VAR:-🏖}")
fmt.Println(output)
}
// Output: Buildkite... 🦀 🏖
```
## 支持的扩展
${parameter}或$parameter- 使用值。 如果 parameter 已设置,则应将其替换;否则将为空
${parameter:-[word]}- 使用默认值。 如果 parameter 未设置或为空,则替换为 word 的扩展(如果省略 word,则替换为空字符串);否则,替换为 parameter 的值。
${parameter-[word]}- 未设置时使用默认值。 如果 parameter 未设置,则替换为 word 的扩展(如果省略 word,则替换为空字符串);否则,替换为 parameter 的值。
${parameter:[offset]}- 使用 offset 之后的 parameter 子字符串。 负的 offset 必须用空格与冒号分隔,并将从字符串的末尾开始截取。如果值超出范围,则替换为空字符串。
${parameter:[offset]:[length]}- 使用 offset 之后指定长度的 parameter 子字符串。 负的 offset 必须用空格与冒号分隔,并将从字符串的末尾开始截取。如果 offset 超出范围,则替换为空字符串。如果 length 大于字符串长度,则返回整个字符串。
${parameter:?[word]}- 如果为空或未设置则指示错误。 如果 parameter 未设置或为空,则将 word 的扩展(如果省略 word,则显示未设置的提示信息)作为错误返回。
$$parameter或\$parameter或$${expression}或\${expression}- 转义的插值。 不会被插值,但会在调用
interpolate.Interpolate()时被反转义
标签:EVTX分析, 日志审计