我正在对我的点文件进行 chezmoi 化,我觉得这应该很简单,但事实并非如此。我想获取此命令行的结果:
system_profiler SPHardwareDataType | grep 'Serial Number (system)' | awk '{print $4}'
并将其放入 chezmoi 中的变量中:
{{- $serialNumber := "Unknown" -}}
{{- if eq .chezmoi.os "darwin" -}}
{{- $serialNumber := output "sh" "-c" "system_profiler SPHardwareDataType | grep 'Serial Number (system)' | awk '{print $4}'" -}}
{{- end -}}
[data]
serial_number = {{ $serialNumber | quote }}
应该很简单,但是无论如何我在最后转义了“$4”,我得到了一个错误。
我会很高兴:
{{- $serialNumber := output "my_command_wrapped_in_a_shell_script.sh" -}}
但我找不到 chezmoi 的“官方”方式来包含不属于
run_*
系列的 shell 脚本。
如果有人教我逃脱的复杂性,我会很高兴。我觉得这应该比实际简单得多。
我尝试过谷歌、聊天机器人、官方文档、随机扔黑斜杠、敲击键盘......
免责声明:这不是关于 chezmoi
output
命令转义的答案。
您可能没有看到它,但该文档有一个用于在 macOS 上获取平台序列号的示例。
{{ if eq .chezmoi.os "darwin" }}
{{ $serialNumber := index ioreg "IORegistryEntryChildren" 0 "IOPlatformSerialNumber" }}
{{ end }}
这应该产生与
相同的结果system_profiler SPHardwareDataType | awk '/Serial Number/ {print $NF}'