【Bash入門】Bashスクリプトで文字列の配列を宣言・操作する方法
Bashスクリプトは、コマンドライン作業を自動化するための便利な手段です。
Bashを使えば、他のスクリプト言語やプログラミング言語と同じように、変数の作成・利用、ループ処理、条件分岐、さらには配列へのデータ格納など、さまざまなことが実現できます。
機能自体はどこかで見たことのある馴染み深いものですが、Bashの構文には独特の癖があり、意外とつまずきやすいポイントもあります。この記事では、Bashで配列を宣言する方法と、コード内で配列を活用する方法をわかりやすく解説します。
Bashで配列を宣言する方法
Bashでの配列宣言は簡単ですが、構文には注意が必要です。他の言語でのプログラミングに慣れている方なら、コードは見覚えのあるものに感じられるでしょう。しかし、一見しただけでは気づきにくい微妙な違いがいくつか存在します。
配列を宣言するには、以下の手順に従います。
- 配列に名前を付ける
- 変数名の後に等号(=)を続ける。等号の前後にスペースを入れてはいけない
- 配列全体を丸括弧( )で囲む(JavaScriptのような角括弧[ ]ではない)
- 文字列は引用符で囲んで記述するが、文字列の間にカンマを入れない
配列の宣言は次のようになります。
myArray=("cat" "dog" "mouse" "frog")以上です。とてもシンプルですね。
Bashで配列にアクセスする方法
配列をループ処理する方法は主に2つあります。要素そのものをループする方法と、インデックスをループする方法です。
配列の要素をループ処理する
配列の要素を順番に処理するには、次のようにコードを書きます。
for str in ${myArray[@]}; do
echo $str
doneこのコードを分解してみましょう。JavaScriptのforEachメソッドにやや似ています。「配列(myArray)内の各文字列(str)について、その文字列を出力する」という処理を行っています。
このループの出力結果は次のとおりです。
cat
dog
mouse
frog注意: 角括弧内の@記号は、配列のすべての要素をループしていることを示しています。これを省略してfor str in ${myArray}と書いてしまうと、配列の最初の文字列しか出力されません。
配列のインデックスをループ処理する
別の方法として、配列のインデックスをループすることもできます。これはJavaScriptのforループに似ており、各要素のインデックスにアクセスしたい場合に特に便利です。
この方法を使う場合、コードは次のようになります。
for i in ${!myArray[@]}; do
echo "element $i is ${myArray[$i]}"
done出力結果は次のとおりです。
element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog注意: myArray変数の直前にある感嘆符(!)は、配列の要素ではなくインデックスにアクセスしていることを示します。感嘆符といえば通常「否定」を表すことが多いため、混乱しやすいポイントです。ここは細心の注意を払ってください。
もう一つの注意点: Bashでは通常、変数を参照するのに波括弧({})は不要ですが、配列の場合は必須です。そのため、配列を参照するときは${myArray}という構文を使いますが、文字列や数値を参照するときは単にドル記号を付けて$iのように書きます。
個々の要素や配列の長さにアクセスする
ループ処理以外にも、特定の要素を直接取得したり、配列の長さを調べたりできます。
echo ${myArray[0]} # cat(最初の要素)
echo ${myArray[-1]} # frog(最後の要素)
echo ${#myArray[@]} # 4(配列の長さ)インデックスは0から始まるため、最初の要素にアクセスするには${myArray[0]}を使用します。負の値を指定すると末尾から数えてアクセスでき、${#myArray[@]}のように#を付けると配列の要素数を取得できます。
まとめ
Bashスクリプトは、コマンドラインの操作を自動化するのに非常に役立つツールです。そして配列は、複数のデータをひとまとめに扱える強力な仕組みです。
配列の宣言や使用自体は難しくありませんが、他のプログラミング言語とは構文が異なる部分が多くあります。「等号の前後にスペースを入れない」「カンマを使わない」「波括弧を忘れない」——こうしたポイントさえ押さえれば、ミスを防ぎながら効率的に配列を活用できるでしょう。
-
Bashのsleepコマンド徹底解説 – シェルスクリプトをN秒間待機させる方法(実行例付き)
シェルスクリプトを書いていると、処理を進める前に一定時間待機させたい場面に出くわすことがあります。たとえば、あるプロセスの完了を待ちたい場合や、失敗したコマンドを再試行する前に間隔を空けたい場合などがその代表例です。そんなときに役立つのが、シンプルで扱いやすい sleep コマンドです。Bashのsleepコマンドの基本的な使い方sleep コマンドは非常に汎用性が高く、構文もとてもシンプルです。使い方は sleep N と入力するだけ。これだけでスクリプトは N 秒間一時停止します。N には正の整数または小数(浮動小数点数)を指定できます。まずは基本的な例を見てみましょう。echo Hell
-
Bashスクリプトでwhileループを使ってファイルを読み込むさまざまな方法
この記事では、Bashスクリプトでwhileループを使ってファイルを読み込む方法について詳しく解説します。ファイルの読み込みはプログラミングにおいて非常によく使われる操作であり、複数の方法とそれぞれの効率性を理解しておくことが重要です。Bashでは1つのタスクをさまざまな方法で実現できますが、常に最適な手段が存在するため、それを選ぶようにしましょう。whileループの基本ファイルの内容を読み込む方法を見る前に、まずwhileループの仕組みを簡単に復習しておきましょう。whileループは条件を評価し、条件が真である限り、指定されたコードブロックを繰り返し実行します。while [ CONDITI