シェル変数を中括弧で囲む必要があるのはいつですか? 質問する

シェル変数を中括弧で囲む必要があるのはいつですか? 質問する

シェル スクリプトでは、{}変数を展開するときにいつ使用しますか?

たとえば、次のようなものを見たことがあります。

var=10        # Declare variable

echo "${var}" # One use of the variable
echo "$var"   # Another use of the variable

大きな違いがあるのでしょうか、それとも単にスタイルの違いなのでしょうか? どちらかが他方よりも好まれるのでしょうか?

ベストアンサー1

この特定の例では、違いはありません。ただし、文字列内の変数を展開したい場合は、{}inが便利です。${}foo

"${foo}bar"

は、"$foobar"代わりに で識別される変数を展開しますfoobar

以下の場合には、中括弧が必ず必要になります。

  • 配列要素の拡張、例:${array[42]}
  • パラメータ拡張操作を使用する${filename%.*}(拡張子を削除し、最小の一致を取り除く)
  • 位置パラメータを 9 を超えて拡張する:"$8 $9 ${10} ${11}"

あいまいな可能性がある場合だけでなく、あらゆる場所でこれを行うことは、優れたプログラミング手法と見なすことができます$foo_$bar.jpg。これは一貫性を保つためであり、アンダースコアが変数名の一部になることが視覚的に明らかでない のような驚きを避けるためです。

おすすめ記事