如何在 chezmoi 中正确转义复杂的命令行?

问题描述 投票:0回答:1

我正在对我的点文件进行 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 脚本。

如果有人教我逃脱的复杂性,我会很高兴。我觉得这应该比实际简单得多。

我尝试过谷歌、聊天机器人、官方文档、随机扔黑斜杠、敲击键盘......

shell dotfiles
1个回答
0
投票

免责声明:这不是关于 chezmoi

output
命令转义的答案。

您可能没有看到它,但该文档有一个用于在 macOS 上获取平台序列号的示例

{{ if eq .chezmoi.os "darwin" }}
{{   $serialNumber := index ioreg "IORegistryEntryChildren" 0 "IOPlatformSerialNumber" }}
{{ end }}

这应该产生与

相同的结果
system_profiler SPHardwareDataType | awk '/Serial Number/ {print $NF}'
© www.soinside.com 2019 - 2024. All rights reserved.