英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论