1. ホーム
  2. bash

[解決済み] シェル変数の周りに中括弧が必要なのはどんなとき?

2022-03-20 23:24:02

質問

シェルスクリプトでは、どのような場合に {} 変数を展開するときは?

例えば、以下のようなものがあります。

var=10        # Declare variable

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

大きな違いがあるのでしょうか、それとも単なるスタイルなのでしょうか?それとも単なるスタイルですか?

解決方法は?

この特定の例では、違いはありません。しかし {}${} を拡張したい場合に便利です。 foo という文字列の中に

"${foo}bar"

から "$foobar" で識別される変数を展開します。 foobar .

また、次のような場合は、曲線ブレースが無条件に必要です。

  • のように、配列の要素を展開します。 ${array[42]}
  • のように、パラメータ展開操作を使用します。 ${filename%.*} (拡張子を削除)
  • 位置パラメーターが9を超えて拡張されている。 "$8 $9 ${10} ${11}"

曖昧になりそうなケースだけでなく、あらゆる場所でこれを行うこと。 できる は、良いプログラミングプラクティスと考えられています。これは一貫性を保つためでもあり、また $foo_$bar.jpg アンダースコアが変数名の一部になっていることが視覚的にわかりにくいからです。