変数STRには文字列が入っているとして、
$STRと${STR}と"${STR}"って展開され方違いますか?
echoで出して見ると同じに思えるんですが、
コマンドのパラメータにSTRを渡したときに
書き方によって正しく動くときとダメなときがあって
使い分けがさっぱりわかりません。

そもそも代入する時点で、どういうときに明示的に
ダブルクォートで括るべきなのか、サンプル見てもまちまちで
よくわかりません。

誰か、ズバッと教えてくれませんか?