みたいに長々と書くことになります。外してやると変数未定義の際にだけ反応する変数になります。変数自体をリセットすることと、空文字を代入することで挙動が変わります。変数未定義時デフォルト値(代入あり)同様に、代入あり版です。${hoge}hoge-defaultこのように、変数が定義されていることと、変数が空であることはちょっと違う扱いを受けます。あたりで確認できるのでそちらも参照してみてください。未定義のとき値を入れて素通りしてくれる心優しい輩がいる一方で、そうもいかないやつもいます。