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コマンドについて学ぶためには以下の書籍がオススメです。
この書籍はLinuxやBashコマンドについて深い部分までかなり丁寧に書かれています。
Linux自身の機能だけでなく、シェルスクリプトを使ったプログラミングや、
イマドキのエンジニアなら知っておくべき知識についても解説されています。
Linuxコマンドについて徹底的にスキルを習得したい人にオススメです。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント