Bash変数の割り当ての単一の括弧

Bash変数の割り当ての単一の括弧

Bashの単一の括弧について疑問に思います。サブシェルでコマンドを実行し、配列を生成するために使用されることを知っていますが、他の目的に使用されますか?

私の注目を集めているのは、変数の割り当てに使用するときです。

var=(hello)
echo $var    # hello

bashはエラーや何も生成しません。出力は次のようになります。

var=hello

これら2つの変数は同じように定義されていますか、それとも異なるのですか?

答え1

あなたの場合、角かっこは次の()配列定義として使用されます。

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

単一の変数を配列に入れると、単一の要素を含む配列のみを持つことになります。


他の質問に答えるために、角かっこは他の目的にも使用されます。ほとんどの場合、bash角かっこは他の文字と組み合わせることができます。

  • コマンドの置換:$()
  • プロセスの置き換え:<()>()
  • サブシェル:(command)
  • 算術評価:(())
  • 機能定義:fun () { echo x; }
  • globのパターンリスト:?()、、、、、、(*()+()@()!()extglob有効な場合のみ)

関連情報