buildkite/interpolate

GitHub: buildkite/interpolate

一个用 Go 编写的 POSIX 参数扩展库,用于在字符串中按照 shell 语法进行环境变量插值。

Stars: 36 | Forks: 6

# Interpolate [![构建状态](https://badge.buildkite.com/3d9081230a965a20d7b68d66564644febdada7f968cc6f9c9c.svg)](https://buildkite.com/buildkite/interpolate) [![GoDoc](https://godoc.org/github.com/buildkite/interpolate?status.svg)](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() 时被反转义
## 开源协议 采用 MIT 协议授权,详见 `LICENSE`。
标签:EVTX分析, 日志审计