_test=`shasum -a 256 my "file here.txt" | awk -F' ' '{print $1}'`
这按预期工作。但是我的强迫症想要使用类似的东西
_test="${my-command-here}"
但是由于 awk 部分中的单引号,我得到了一个错误的替换错误。
$ _test="${shasum -a 256 "my file here.txt" | awk -F' ' '{print $1}'}"
zsh: bad substitution
$ _test=${shasum -a 256 \"my file here.txt\" | awk -F\' \' \'{print $1}\'}
zsh: bad substitution
关于如何让它工作的任何想法?谢谢
您正在做的事情
${...}
称为Parameter Expansion。这将扩展参数 - 在您的情况下,一个名为 的参数shasum -a 256 "my file here.txt" | awk -F' ' '{print $1}'
,但这不是一个有效的参数名称,如Parameters中所述:您真正想要的是在其中运行所有内容,
${...}
并且为此您需要Command Substitution,它使用括号而不是花括号: