旦那 の ギャンブルk8 カジノシェルスクリプトに挑戦しよう(16)配列[基本編]仮想通貨カジノパチンココニベット 入金 不要 ボーナス

旦那 の ギャンブルk8 カジノシェルスクリプトに挑戦しよう(16)配列[基本編]仮想通貨カジノパチンココニベット 入金 不要 ボーナス

麻雀 の ルール を 教え てk8 カジノ 「“応用力”をつけるためのLinux再入門」のインデックス

switch サガ コレクション“応用力”をつけるためのLinux再入門

配列の基本操作

 「配列」は、「変数名[添字]=値」でセットし、「${変数名[添字]}」で参照します(※1)。

【※1】「変数名[添字]」と定義することで、自動的に配列として扱われます。変数が配列であることを明示して定義したい場合は、「declare -a 配列名」のようにします。オプションに大文字の「A」を指定して「declare -A 配列名」のようにすると、連想配列になります(本連載第37回で扱います)。

 まずは、コマンドラインで試してみましょう。入力を簡略化するために、実行例では引用符(””)の入力を省略しています。なお、変数名と「[」の間、および「=」記号の前後には空白を入れることができない点に注意してください(※2)。

【※2】添字部分は算術式として扱われています。この後のfor文のように、添字部分を変数にして「${配列名[変数]}」のように参照したり、「配列名[変数]=値」で値をセットしたりする際(本連載第37回で扱います)、添字箇所の変数に$記号は不要です。

seasons[0]="Spring"seasons[1]="Summer"seasons[2]="Autumn"seasons[3]="Winter"echo ${seasons[3]}echo "${seasons[0]} has come"▲コマンド例$ seasons[0]="Spring"$ seasons[1]="Summer"$ seasons[2]="Autumn"$ seasons[3]="Winter"$ echo ${seasons[3]}Winter← 「seasons[3]」の値が表示された$ echo "${seasons[0]} has come"Spring has come▲実行結果●for文で配列の値を表示する(1)――連続した数値で参照する

 配列の添字は、連続していなくても構いません。しかし、連続した数字にしておくことで、「for」文などで扱いやすくなります。

 先ほどの配列「seasons」を、for文で表示してみましょう。

for ((i=0; i<4; i++)) do echo $i ${seasons[i]}← iの値とseasons[i]の値を表示するdone▲コマンド例

 ここでは、シェルスクリプトではなく、コマンドラインでfor文を入力しています(参考:連載『Linux基本コマンドTips』第215回)。2行目はfor文の続きなので、プロンプトが「>」と表示されています。

$ for ((i=0; i<4; i++))> do> echo $i ${seasons[i]}> done0 Spring1 Summer2 Autumn3 Winter▲実行結果(先ほどの実行結果の端末を閉じてしまった場合は、seasons[0]~seasons[3]に値をセットしてから実行する)●for文で配列の値を表示する(2)――「in」を使って参照する

 「in」を使うと、添字を使わずに個々の値を表示することができます。この場合、添字が連続した数字になっている必要はありません。

for season in ${seasons[@]}do echo $seasondone▲コマンド例$ for season in ${seasons[@]}> do> echo $season> doneSpringSummerAutumnWinter▲実行結果●for文で配列の値を表示する(3)――「in」で添字を使って参照する

 「in」で添字を参照したい場合は、「変数 in ${!配列名[@]}」のように指定します。この場合、配列の個々の値を参照する際には「${配列名[$変数]}」のようにします。添字の「$」は省略できません。

for i in ${!seasons[@]}do echo $i ${seasons[$i]}← 添字と値を表示するdone▲コマンド例$ for i in ${!seasons[@]}> do> echo $i ${seasons[$i]}> done0 Spring1 Summer2 Autumn3 Winter▲実行結果●値を変更する

 次に「値」を変更してみます。やり方は最初に定義したときと同じで、「配列名[添字]=値」のように書きます。

seasons[2]="Fall"▲コマンド例

 先ほどと同様に、コマンドラインで試してみます。for文は先ほどと同じなので、矢印キーまたは[Ctrl]+[P]/[Ctrl]+[N]キーで「ヒストリ」を利用するとよいでしょう。

$ seasons[2]=Fall$ for ((i=0;i<4;i++))do echo $i ${seasons[i]}; done← ヒストリを利用0 Spring1 Summer2 Fall3 Winter▲実行結果●要素の個数を調べる

 配列として管理されている個々の変数を、配列の「要素」と呼びます。例えば、先ほど定義した配列「seasons」の要素は4つです。

 配列に要素が幾つあるかは、「${#変数名[@]}」で調べることができます。

echo ${#seasons[@]}▲コマンド例$ echo ${#seasons[@]}4▲実行結果●配列に値をまとめて設定、表示する

 「配列名=(値 値 値…)」で、値をまとめてセットすることができます。この場合、添字は「0」からとなります(※3)。

【※3】「配列名=([添字]=値 [添字]=値 [添字]=値…)」のように、添字付きで設定することもできます。この場合、添字が連続していなくても構いません。

 また、「${配列名[@]}」で、値をまとめて表示することがきます。

week=(Sun Mon Tues Wed Thur Fri Sat)← 配列weekに値をセットするecho ${week[0]}← 最初の値(Sun)が表示されるecho ${week[6]}← 7つ目の値(Sat)が表示されるecho ${week[@]}← 配列の値をまとめて表示する▲コマンド例$ week=(Sun Mon Tues Wed Thur Fri Sat)$ echo ${week[0]}Sun$ echo ${week[6]}Sat$ echo ${week[@]}Sun Mon Tues Wed Thur Fri Sat▲実行結果

 先ほどのseasons同様、配列「week」の値を添字0から順番に表示すると、以下のようになります。

$ for ((i=0;i<${#week[@]};i++))> do> echo $i ${week[i]}> done0 Sun1 Mon2 Tues3 Wed4 Thur5 Fri6 Sat▲実行結果配列に値を追加する仮想通貨カジノパチンコau 電気 プラン