シェル スクリプトでは、{}
変数を展開するときにいつ使用しますか?
たとえば、次のようなものを見たことがあります。
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
。これは一貫性を保つためであり、アンダースコアが変数名の一部になることが視覚的に明らかでない のような驚きを避けるためです。