我正在为一个流行的命令行工具(ansible-playbook)编写一个go包装器,我需要通过exec.Command调用传递一个参数.bash等价物将是:
MY_VAR=some_value ansible-playbook -i custom-inventory playbook.yml
Run Code Online (Sandbox Code Playgroud)
以前我只是使用os.Setenv导出MY_VAR,但这会导致并行执行剧本的问题.所以我想在命令前面传递var,这样每个调用都有它自己的var值.
我不确定如何使用exec.Command执行此操作,因为该函数的第一个参数是"command".有小费吗?
编辑:我已尝试使用Cmd结构的Env字段,但它会覆盖所有环境变量.我有大量的配置集,我只想覆盖这个特定的环境变量.这不可能吗?
我shell: docker ps ...在我的一些剧本中执行任务.这通常有效但有时docker守护进程挂起并且docker ps不会返回~2小时.
如果docker ps不返回,如何在合理的时间内将Ansible配置为超时?
我定义了一个枚举和结构类型,如下所示:
type NodeType int
const (
City NodeType = iota
Town
Village
)
type AreaNode struct {
Location Coord2D
Type NodeType
}
Run Code Online (Sandbox Code Playgroud)
现在我正在迭代一系列节点,每个节点都有一个类型
if node, ok := area.Nodes[coord]; ok {
switch node.Type {
case node.Type == City:
// do something for City
case node.Type == Town:
// do something for Town
case node.Type == Outpost:
// do something for Outpost
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:二进制表达式中的不兼容类型.
我该如何解决这个问题?