在文件中展开sh变量(不是环境变量)

huangapple go评论80阅读模式
英文:

Expand sh variable(not Env) in file

问题

你好!以下是你要翻译的内容:

能否在sh脚本文件中展开一个变量集

在下面的代码中,变量FOO不会被打印出来,但是如果你取消注释// os.Setenv("FOO", "A"),有没有办法在脚本中展开设置的变量?

func TestExpandShVar(t *testing.T) {
    // os.Setenv("FOO", "A")
    cmdOne := exec.Command("sh", "-c", os.ExpandEnv("FOO=B\n\"VALUE:${FOO}\""))
    fmt.Println(cmdOne.Args[2])
}

希望对你有帮助!如果还有其他问题,请随时提问。

英文:

Can you expand a variable set in a sh script file

In the following, FOO will not be printet - but if you uncomment // os.Setenv("FOO", "A"). Is there a way to expand the variable set within the script?

func TestExpandShVar(t *testing.T) {
	// os.Setenv("FOO", "A")
	cmdOne := exec.Command("sh", "-c", os.ExpandEnv("FOO=B\n\"VALUE:${FOO}\""))
	fmt.Println(cmdOne.Args[2])
}

答案1

得分: 0

FOO=B 将由 shell 执行,os.ExpandEnv() 是一个 Go 函数调用,它将在命令开始之前执行。

os.ExpandEnv() 只分析传递给它的 string,以查找 ${var}$var 模式。显然,它不会解释 shell 命令。所以,没有解释器是不可能实现你想要的效果的。

英文:

FOO=B will be executed by the shell, and os.ExpandEnv() is a Go function call, and it will be executed before the command starts.

os.ExpandEnv() only analyzes the string passed to it to find ${var} or $var patterns. It obviously does not interpret the shell command. So no, what you want is not possible without an interpreter.

huangapple
  • 本文由 发表于 2021年6月21日 16:30:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/68064780.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定