この質問 に答えたとき、${}
表記法。ここで何度も見てきたように、バックティックよりも好ましい。
しかし、私が試したとき
joulesFinal=${echo $joules2 \* $cpu | bc}
メッセージを受け取りました
-bash: ${echo $joules * $cpu | bc}: bad substitution
しかし
joulesFinal=`echo $joules2 \* $cpu | bc`
正常に動作します。それでは、他にどのような変更を加える必要がありますか?
_``
_はコマンド置換と呼ばれ、$()
(括弧)と同等ですが、_${}
_(中括弧)を使用しています。
したがって、これらは等しく、「内部に配置されたコマンドを解釈する」ことを意味します。
_joulesFinal=`echo $joules2 \* $cpu | bc`
joulesFinal=$(echo $joules2 \* $cpu | bc)
^ ^
( instead of { ) instead of }
_
_${}
_式は変数置換に使用されます。
_man bash
_から:
コマンド置換により、コマンドの出力でコマンド名を置き換えることができます。 2つの形式があります。
_$(command) or `command`
_
また、_``
_は処理が難しく、たとえばネストすることはできません。以下のコメントも参照してください なぜ_...
_(バックティック)より$(...)が好ましいのですか? 。
特定のケースでは、動作がわずかに異なります。
$ echo "`echo \"test\" `"
test
$ echo "$(echo \"test\" )"
"test"
そのため、バッククォートは二重引用符を静かに削除します。