
ShellScriptで繰り返し処理を書きたいです。



for文を使えば、ShellScriptで繰り返し処理を書くことができるぞ。
✔️ 本記事のテーマ
ShellScriptのfor文の書き方
✔️ 読者さんへの前置きメッセージ
結論から述べると、
以下のように書くことでShellScriptでfor文を書くことができます。
for 変数 in 値リスト
do
処理
done
本記事は「ShellScriptの繰り返し処理(for文)」について書いています。
この記事を読むことで
「ShellScriptのfor文の書き方 や ShellScriptの繰り返し処理の使い方」を理解できます。
ShellScriptを作って運用すれば、PCでの作業を自動化することができます。
また、繰り返し処理はプログラミングの基本です。
この記事ではそんなShellScriptで繰り返し処理(for文)を行う方法を解説しています。
では、解説していきましょう。
ShellScriptのfor文の書き方
ShellScriptのfor文の書き方は以下の通りです。
for 変数 in 値リスト
do
処理
done
値リストとして渡す値の数だけ繰り返して処理を実行します。
繰り返したい処理はdo~doneの中に書くことで定義することができます。
ShellScriptのfor文の使用例
では実際にShellScriptのfor文を使って、繰り返し処理を書いてみましょう。
# sample.sh
for var in hoge fuga foo bar
do
echo $var
done
このように書いたShellScriptを実行すると以下のように出力されます。
$ sample.sh
hoge
fuga
foo
bar
値リストとして渡した「hoge fuga foo bar」を一つずつ「echoコマンド」の引数にしていることがわかります。
このようにしてShellScriptで繰り返し処理(for)を定義することができます。
次からこの繰り返し処理(for)を具体的な使用例とともに解説しましょう。
ShellScriptで一定回数の繰り返し処理(for)
繰り返し処理(for)では一定回数のループを回したい時があるでしょう。
そのような時、ShellScriptでは以下のように書きます。
for i in `seq 1 N`
do
処理
done
「N」に任意の数を入れると、任意の数分だけ「処理」を繰り返します。
試しにこのコード使って、1から10まで表示するプログラムを書いてみましょう。
$for i in `seq 1 10`
>do
> echo "$i 回目のループです。"
>done
1 回目のループです。
2 回目のループです。
3 回目のループです。
4 回目のループです。
5 回目のループです。
6 回目のループです。
7 回目のループです。
8 回目のループです。
9 回目のループです。
10 回目のループです。
このように「seq」を使うことで、一定回数の繰り返し処理も簡潔に書くことができます。
ShellScriptでコマンド結果の繰り返し処理(for)
ShellScriptではコマンドの結果を渡して、繰り返し処理を書くこともできます。
どういうことか実際のコードを使って解説しましょう。
例えば「特定のディレクトリの中のファイルを自動でバックアップを取りたい」
といった要件があるときに以下のコードが使えます。
$ for file_name in `ls *.txt`
do
cp "$file_name" "$file_name.bk"
done
順番に解説するとまず「`ls *.txt`」の部分でディレクトリの中の拡張子txtのファイル群を取得します。
次に「for file_name in `ls *.txt`」の部分でそのファイル群からファイル名を一つずつ取り出しています。
そして「cp “$file_name” “$file_name.bk”」の部分でcpコマンドに渡しています。
このcpコマンドでファイル名.bkというファイルをバックアップとして新たに作成しています。
このようにコマンドの結果をコードの中で使えるのは、ShellScriptの特徴と言えるでしょう。
ShellScriptで繰り返し処理(for)を1行で書く
ShellScriptのベースはLinuxコマンドなので、for文を1行で書くこともできます。
ShellScriptのfor文を1行で書くときの記法は以下の通りです。
for 変数 in 値リスト;do 処理 ;done
試しにfor文を1行で書いてみましょう。
for i in `seq 1 10`
do
echo "$i 回目のループです。"
done
このコードは1から10まで「X回目のループです。」と表示するfor文です。
このfor文を1行で書くと以下のようなコードになります。
for i in `seq 1 10`;do echo "$i 回目のループです。";done
このように複雑じゃないfor文であれば、1行で書いてしまった方がスッキリします。
ShellScriptの使い道
ところで、ShellScriptはどのような場面で使うのでしょうか?
ShellScriptは使えるようになると、実は使い道の多いスキルです。
普段、面倒だと思いながらやっている大量のファイルのコピーや移動、ファイル名の変換などをShellScriptを使うことで自動化することが出来ます。
また、最近ではDockerの登場によってプログラムをコンテナ上で動かすこともあるでしょう。そのような時にDockerコンテナ内での作業(例えば、開発環境の構築など)もShellScriptで自動化することが出来ます。
Dockerの登場が改めてShellScriptの需要を高めたと行っても過言ではないでしょう。
参考までにDockerについては
などの記事で解説しています。
ShellScriptについてもっと知識をつけるなら
ShellScriptは手軽に作成できて、Linux/Unix/MacOSなどで動くスクリプトです。
広くIT業界で使われているので汎用性の高いスキルと言えるでしょう。
ShellScriptやLinuxコマンドについてスキルをつけるならUdemyの教材がオススメです。
Udemyは買い切りの動画学習サービスです。
一度購入してしまえば、その教材はずっと使うことができます。
さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。
上記の教材はLinuxコマンドについて徹底的にスキルを習得することができます。
その教材の質の高さから4.3以上の高評価がついています。
また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。
オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。
オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。
オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。
✔️オススメのプログラミングスクール ベスト3
- 未経験からIT業界へ転職なら【DMM WEBCAMP】
※ROLANDさんがプロモーターを務める有名スクールです。無料体験の内容も充実していて人気です。 - プログラミングのオンラインスクールCodeCamp
※ここも有名なスクールです。サポート体制がしっかりしているので安心です。 - 3ヶ月間のプログラミングスクール【Tech Boost】
※比較的新しいスクールですが、そのクオリティの高さから伸びてきているスクールです。
プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。
気になった方はぜひチェックしてみて下さい〜!
コメント