_test=`shasum -a 256 my "file here.txt" | awk -F' ' '{print $1}'`
これは期待どおりに機能します。しかし、私の中のOCDは次のようなものを使用したいと思います。
_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
どのように動作させるためのアイデアはありますか?ありがとう
答え1
あなたがしていることを${...}
言います。パラメータ拡張。これによりパラメータが拡張されます。あなたの場合、名前はパラメータですが、shasum -a 256 "my file here.txt" | awk -F' ' '{print $1}'
これはで説明されているように有効なパラメータ名ではありません。パラメータ:
名前は英数字とアンダースコアの順序であっても、単一文字「*」、「@」、「#」、「?」、「-」、「$」または「!」であってもよい。
${...}
あなたが本当に望むのは、必要なすべてを実行することですコマンドの置き換え、中括弧の代わりに括弧を使用します。
↪ touch "my file here.txt"
↪ _test="$(shasum -a 256 "my file here.txt" | awk -F' ' '{print $1}')"
↪ echo $_test
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855