【bash】シェルスクリプトの始め方【書き方・動かし方を解説】

シェル/bash

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までの処理をシェルスクリプトにしておき、寝る前に実行してしまえば、朝起きた時には完了している、といった効率的な使い方ができます。

シェルスクリプトを使いこなすには、変数や制御文、判定文の使い方をマスターする必要があります。詳しくは以下の記事を参考にしてください。

詳しくはこちらの記事で解説します

今回は以上です。シェルスクリプトでスクリプティングを始めたい方にとって参考になりましたら幸いです。

Blog TOP  シェルスクリプトを勉強したい人向け|bashの使い方 記事まとめ

bashの使い方 - もくじ

bashの使い方 - もくじ

シェルとは

 - シェルとは
 - シェルはOSと会話するための言語
 - シェルの種類(bash以外のシェル)
 - シェルスクリプトとは
 - シェルスクリプトの書き方

条件式

 - if else文
 - 文字列の比較
 - &&と||の使い方
 - case文

文字列操作

 - 文字列の連結
 - 文字列の一部を切り出す

繰り返し

 - for文
 - while文
 - while文でリストから1つ要素ずつ処理する

定数

 - 定数の定義

関数

 - 関数の定義

デバッグ

 - デバッグオプション(-x)

実行権限

 - 実行権限のないシェルスクリプトファイルを実行する

 - シェルスクリプトの書籍3選