GNU/Linux >> Linux の 問題 >  >> Linux

Bash変数代入の単一括弧?

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

私の注意を引いたのは、

のようにin変数代入を使用する場合です。
var=(hello)
echo $var    # hello

bashはエラーなどを生成せず、出力は

と同じです。
var=hello

これらの2つの変数の定義は同じですか、それとも違いがありますか?

承認された回答:

あなたの場合、括弧() たとえば、配列定義として使用されます

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には多くの状況があります 他のキャラクターと組み合わせて、次のように使用できます:

  • コマンド置換: $()
  • プロセス置換: <() および>()
  • サブシェル:(コマンド)
  • 算術評価:(())
  • 関数定義: fun(){echo x; }
  • globのパターンリスト:?() *() +() @()!() extglobの場合のみ 有効です

Linux
  1. Bashの文字列/配列から一意の要素の配列を作成するにはどうすればよいですか?

  2. `declare -a A`はBashで空の配列`a`を作成しますか?

  3. Expr算術の括弧:3 *(2 + 1)?

  1. Bash の配列が見つかりません

  2. bash の変数を持つエイリアス

  3. bash:リスト ファイルを変数に入れますが、配列のサイズは 1 です

  1. Bashスクリプト(I)

  2. bash のテキスト文字列を配列に変換する

  3. 単一行の場合はバッシュ