【bash】シェルスクリプトの始め方【書き方・動かし方を解説】
こんにちは。
普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
» 参考:【一生使える本です】bashの解説書 厳選3選【おすすめ】
今回は、bashについての解説記事です。
bashでシェルスクリプトを使い始めたい人
「bashでシェルスクリプトを始めたいです。どうやってやればいいですか?そもそも、シェルスクリプトはどのような時に使うと有効ですか?」
こんな悩みに答えます。
この記事を書いた私は、年収1,000万円ちょっとのエンジニア。高校生の頃から約20年間、bashやtcsh、zshのようなシェルスクリプトのほか、C/C++,Java,SML,Ocamlなど様々なプログラミング言語を扱ってきました。
数あるプログラミング言語の中でも、bashのようなスクリプト言語は簡単かつ効率的に処理を行うことができるのが特徴です。
これまでのプログラミング経験とエンジニア業務経験を踏まえて記事を書きます。
- 最も簡単なシェルスクリプトを作る手順
- スクリプトを実行する手順
- 上記手順の内容を解説
- なぜシェルスクリプトを使うのか
最も簡単なシェルスクリプトを作る手順
まずは最も簡単なシェルスクリプトをエディタで作ります。
#!/bin/bash echo "Hello, World"
↑のファイルをhelloという名前で保存します。
スクリプトを実行する手順
chmodコマンドで全ユーザ(a)にhelloスクリプトの実行権限(+x)を付けて、
$ chmod a+x ./hello
helloを実行するだけです。
$ ./hello Hello, World
スクリプトの2行目に書いたecho “Hello, World”が実行されました。
解説
まずはシェルスクリプトの内容を1行ずつ解説します。
#!/bin/bash
WINDOWSでは拡張子によって実行するプログラムが選択されますが、UNIXのスクリプトでは1行目に書かれたプログラム(/bin/bash)によってスクリプトが実行されます。
例えばPHPのスクリプトの場合は#!/usr/bin/PHP
と書き、rubyのスクリプトの場合は#!/usr/bin/ruby
という風にそれぞれのコマンドのパス書きます。
echo "Hello, World"
続いて動かしたいプログラム(コマンド)を書いていきます。ここでは、Hello, Worldという文字を出力するだけです。echoコマンドを使うと、画面にその文字列が出力されます。
$ ./hello Hello, World
スクリプトを実行すると内部で/bin/bashがコードを読み取り、実行されてその結果が表示されます。
なぜシェルスクリプトを使うのか
シェルスクリプトを使えば、UNIX上の一連の操作を自動化することができます。自動化のメリットを得られるのは、次の作業を行う時です。
- 繰り返し処理を行う
- 大量の処理を行う
順に解説します。
繰り返し処理を行う
例えば毎日、ファイルのバックアップを取りたい場合の手順を例に解説します。
- 1.昨日日付のバックアップ用のディレクトリを作成する
- 2.PCから最終更新日が昨日のファイルを探す
- 3.ファイルをバックアップ用のディレクトリにコピーする
毎日1〜3に相当するコマンドを実行しなくてはなりません。日付を間違えて入力してしまうかもしれません。でも一連のコマンドを実行するシェルスクリプトを作っておけば、スクリプトの実行を一回するだけですみます。効率的ですね。
✔︎テクニック
日付を指定しないで昨日日付のディレクトリを作るには、次のように記述します。
mkdir `date -d 'yesterday'`
大量の処理を行う
大量の処理を行う時もシェルスクリプトは便利です。例えば次の処理をする場合を考えます。
- 1.ファイルを1万個作る
- 2.作ったファイルを圧縮する
- 3.圧縮したファイルをメールで送信する
1のファイル作成に2時間、2のファイル圧縮には30分かかるとします。メールを送信するまで、2時間半も操作をしなくてはなりません。しかもほとんどが待ち時間です。
こんな時は1〜3までの処理をシェルスクリプトにしておき、寝る前に実行してしまえば、朝起きた時には完了している、といった効率的な使い方ができます。
シェルスクリプトを使いこなすには、変数や制御文、判定文の使い方をマスターする必要があります。詳しくは以下の記事を参考にしてください。
【bash入門】シェルスクリプトの使い方を徹底解説
「仕事でbashを使うことになりました。条件文や繰り返し文、文字列やファイル操作など基礎から勉強したいです。bash入門者が学習できる、まとめ記事はありませんか」→こんな悩みを解決します。bashを学習したい方向けのチュートリアルとなる記事をまとめました
今回は以上です。シェルスクリプトでスクリプティングを始めたい方にとって参考になりましたら幸いです。
Blog TOP シェルスクリプトを勉強したい人向け|bashの使い方 記事まとめ
bashの使い方 - もくじ
シェルとは
- シェルとは
- シェルはOSと会話するための言語
- シェルの種類(bash以外のシェル)
- シェルスクリプトとは
- シェルスクリプトの書き方条件式
- if else文
- 文字列の比較
- &&と||の使い方
- case文文字列操作
- 文字列の連結
- 文字列の一部を切り出す繰り返し
- for文
- while文
- while文でリストから1つ要素ずつ処理する定数
- 定数の定義
関数
- 関数の定義
デバッグ
実行権限
本