MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
シェルスクリプトの基礎 - 配列のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
シェルスクリプトの基礎 - 配列
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == シェルスクリプトにおいて、配列を使用する方法を記載する。<br> <br><br> == 配列の定義 == 配列を定義するには、以下のように記述する。<br> <syntaxhighlight lang="sh"> array[0]=a array[1]=b array[2]=c </syntaxhighlight> <br> または、以下のように記述する。<br> <syntaxhighlight lang="sh"> array=(a b c) </syntaxhighlight> <br><br> == 配列の基本 == 以下の例では、0〜3番目(2番目を除く)までの要素の配列を定義した後、各要素と配列全体を出力している。<br> <syntaxhighlight lang="sh"> #!/bin/sh array[0]=a array[1]=b array[3]=d # 0番目の要素を参照する echo "$array" # 1番目の要素を参照する echo "$array[1]" # 2番目の要素は存在しないので空文字となる echo "$array[2]" # 3番目の要素を参照する echo "$array[3]" # 全要素を参照する echo "$array[@]" # 出力 a b d a b d </syntaxhighlight> <br><br> == 配列の要素の追加 == 配列に要素を追加する場合、新たな添字を指定して値を代入する。<br> また、配列に配列を追加する場合、<code>+=</code>を使用して配列名<code>+=(値 値 値...)</code>のように記述する。<br> <syntaxhighlight lang="sh"> #!/bin/bash array=(a b c d) # 配列arrayの4番目の要素に代入 array[4]=e # 配列arrayの末尾に要素を代入 array+=(f g) # 配列arrayの末尾に要素を代入(ただし、添字が0から1ずつ値が存在する場合のみ可能) array[${#array[@]}]=h for i in ${!array[@]} do echo $i ${array[$i]} done # 出力 a b c d e f g h </syntaxhighlight> <br><br> == 配列の要素の削除 == 以下の例では、配列を定義した後、<code>unset</code>コマンドにより0番目の要素を削除している。<br> <syntaxhighlight lang="sh"> #!/bin/sh array[0]=a array[1]=b unset array[0] echo "$array[@]" # 出力 b </syntaxhighlight> <br><br> == 配列の表示 == 配列の要素数を表示するには、<code>${#変数名[@]}</code>を使用する。<br> <syntaxhighlight lang="sh"> #!/bin/sh array=(a b c d) echo "${#array[@]}" # 出力 4 </syntaxhighlight> <br><br> == 配列と繰り返し == 以下の例では、括弧<code>()</code>を使用して配列を定義した後、<code>for</code>文を使用して配列の要素を出力している。<br> <syntaxhighlight lang="sh"> #!/bin/sh array=(a b c d) for e in $array[@] do echo "element = $e" done # 出力 element = a element = b element = c element = d </syntaxhighlight> <br> また、以下のように記述することもできる。<br> <syntaxhighlight lang="sh"> #!/bin/sh array=(a b c d) for ((i=0; i<${#array[@]}; i++)) do echo "element = $array[i]" done # 出力 element = a element = b element = c element = d </syntaxhighlight> <br><br> == 連想配列 == 連想配列の定義は、<code>declare -A <配列名></code>と記述する。<br> 例えば、連想配列arrayを定義する場合は、<code>declare -A array</code>と記述する。<br> <br> 通常の配列は、<code>declare -a <配列名></code>と記述する。通常の変数は、<code>declare <変数名></code>とする。<br> <br> 連想配列の値は、<code>連想配列名[キー]=値<code>と記述する。 例えば、連想配列arrayにおいて、キーhogeに値10を代入する場合、<code>array["hoge"]=10</code>と記述する。 引用符""を省略して、<code>array[hoge]=10</code>と記述してもよい。 値の参照は、通常の配列と同様に<code>${array["hoge"]}</code>と記述する。ここでも、引用符""は省略できる。 for ~ in」で配列の値を全て参照したい場合も、通常の配列同様、「for 変数名 in ${配列名[@]}」のようにします。 全てのキーの値を参照したい場合は、配列名の前に「!」記号を付けて、「for 変数名 in ${!配列名[@]}」のようにします。 以下のサンプルスクリプト(arraytest)では、連想配列「exam」を定義し、suzuki、tanaka、yamamotoの点数を保存しています。そして、1つ目のfor文では全員の点数を順次表示し、2つ目のfor文では全員の名前と点数(キーと値)を表示しています。なお、サンプルスクリプトでは、suzukiが連想配列のキーであることを分かりやすくするために、キーに引用符を使用しています。 <syntaxhighlight lang="sh"> #!/bin/sh declare -A array array["hoge"]=10 array["piyo"]=20 array["fuga"]=30 for e in ${exam[@]} do echo $e done for k in ${!exam[@]} do echo "key : $k" echo "value: ${exam[$k]}" done __FORCETOC__ [[カテゴリ:シェルスクリプト]]
シェルスクリプトの基礎 - 配列
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse