foo[0]=abc
foo[1]=def
私が達成しようとしているのは、配列を宣言することですが、すぐに定義する必要がないため、定義しないでください。ほとんどのプログラミング言語では、このようになります
int bar[100];
これはシェルスクリプト言語で可能ですか?
foo[0]=abc
foo[1]=def
私が達成しようとしているのは、配列を宣言することですが、すぐに定義する必要がないため、定義しないでください。ほとんどのプログラミング言語では、このようになります
int bar[100];
これはシェルスクリプト言語で可能ですか?
回答:
次のように空の配列を作成することにより、変数が配列であることを指定できます。
var_name=()
var_name
によって報告される配列になります
$ declare -p var_name
declare -a var_name='()'
例:
var_name=()
for i in {1..10}; do
var_name[$i]="Field $i of the list"
done
declare -p var_name
echo "Field 5 is: ${var_name[5]}"
これは次のようなものを出力します:
declare -a var_name='([1]="Field 1 of the list" [2]="Field 2 of the list" [3]="Field 3 of the list" [4]="Field 4 of the list" [5]="Field 5 of the list" [6]="Field 6 of the list" [7]="Field 7 of the list" [8]="Field 8 of the list" [9]="Field 9 of the list" [10]="Field 10 of the list")'
Field 5 is: Field 5 of the list
上記の方法に加えて、declareステートメントで配列を作成することもできます。
-aオプションを指定したdeclareステートメントは、変数を配列として宣言するために使用できますが、必須ではありません。すべての変数は、明示的な定義なしで配列として使用できます。実際のところ、ある意味では、すべての変数は配列であり、添え字なしの割り当ては「[0]」への割り当てと同じように見えます。配列の明示的な宣言は、組み込みの宣言を使用して行われます。
declare -a ARRAYNAME
連想配列は次を使用して作成されます
declare -A name.
declareおよびreadonlyビルトインを使用して、配列変数の属性を指定できます。各属性は、配列のすべてのメンバーに適用されます。
配列変数を設定したら、次のようにアクセスします。
${array_name[index]}
これは実際にはCと同じです。Cでは、必要に応じて配列を使用できます。ここでは、空の配列を取得して、任意の値を入力できます。
bar=()
その配列の値を取得し、それを出力する単純なForループ:
bar=()
for ((i=0;i<10;i++));
do
read bar[$i] #Take Value in bar array
echo bar[$i]
done
それが役に立てば幸い。