如何逃避Ansible 1.9.2中的双花括号?
例如,如何在以下shell命令中转义双花括号?
- name: Test
shell: "docker inspect --format '{{ .NetworkSettings.IPAddress }}' instance1"
Run Code Online (Sandbox Code Playgroud) 根据fortyforty对这个问题的回复:
fmt.Sprint(e)
将调用e.Error()
将值转换e
为astring
.如果Error()
方法调用fmt.Sprint(e)
,则程序会递归直到内存不足.您可以通过将
e
值转换为不带String
或Error
方法的值 来中断递归.
这对我来说仍然令人困惑.为什么fmt.Sprint(e)调用e.Error()而不是String()?我尝试使用Stringer接口,这是我的代码:
package main
import (
"fmt"
"math"
)
type NegativeSqrt float64
func (e NegativeSqrt) Error() string {
fmt.Printf(".")
return fmt.Sprint(e)
}
func (e NegativeSqrt) String() string {
return fmt.Sprintf("%f", e)
}
func Sqrt(x float64) (float64, error) {
if x < 0 {
return 0, NegativeSqrt(x)
}
return math.Sqrt(x), nil
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(Sqrt(-2))
}
Run Code Online (Sandbox Code Playgroud) 使用 EDK2 构建固件,提供自定义默认启动顺序的最简单方法是什么?
例如,我知道 QEMU 的 Ovmf 基于 QEMU 的“bootorder”fw_cfg 文件(使用 QemuBootOrderLib 中的代码)以编程方式重新定义 UEFI 启动顺序。因此,类似地,我可以以编程方式指定和强制执行启动顺序。
有没有更简单的方法来实现这一点(也许为 UEFI 变量提供自定义值)?
注意:不使用shell!我需要将此配置包含在固件映像中!