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
有効な場合のみ)