2行以上かつ、2度以上実行する可能性があるコマンドはシェルスクリプトで自動化(その1シェルスクリプトことはじめ)

Web

はじめに

1つ前の記事『WordPressエンジニアになるための究極の原理原則』でも書いたのですが、
WordPressエンジニアになるための究極の原理は、
「WordPressのコアファイルを読んだ時間がWordPressエンジニアのレベルに比例する」
です。
そして【原則4】は、2行以上かつ、2度以上実行する可能性があるコマンドはシェルスクリプトで自動化させることなのです。

「じゃあ、シェルスクリプト書けないといけないじゃん」ということです。

そこで今回はシェルスクリプトについて扱います。

シェルスクリプトとは

さあ、おなじみWikipediaを見てみましょう。

シェルスクリプト (英語: shell script) は、
オペレーティングシステムのシェルまたはコマンドラインインタプリタ向けに書かれたスクリプト言語である。
狭義では、Unixシェルで用いられるスクリプト言語を指す。
シェルスクリプトで書かれる典型的処理としては、ファイル操作、プログラム実行、テキストの印刷などがある。
シェルスクリプト用インタプリタの多くはコマンドラインインタフェースも兼ねており、各種Unixシェル、Windows PowerShell、MS-DOSのCOMMAND.COMなどがある。
他にAppleScriptやグラフィカルな Windows Script Host (WScript.exe) などもあり、コマンドラインインタフェース抜きでコンピューティング環境にスクリプト機能を加えている。

https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88

まあ、わかりにくいのでLinuxを扱っているという前提に立って言うと、
Linuxで実行できるシェル(OS(今回はLinux kernel)と対話をし、実行したい処理をさせるもの)をスクリプト(人間語で書いたプログラムをコンピュータが分かる形に変換する作業(コンパイル)をさせるプログラム)化したものです。

開発などの作業の自動化には必須のものです。
シェルスクリプトを極めたりシェルスクリプトで面白いことをするのを「シェル芸」と呼んでいます。

シェルスクリプトはどういう時に使う?

多くは、Linuxで標準のbash(Bourne Again shell)というシェルを使うことが多いかと思いますが、zsh(Z shel)やcsh(C shell)などいくつもの種類があります。
どういう時に使うかというと、例えば、

  • バックアップを取得したいときにシェルスクリプトを実行させるだけで自動でバックアップをとってくれる
  • データベースの同期
  • 再起動
  • ログの出力や解析

シェルスクリプトを作ってみる

まず、シェバン(#! から始まる1行目のこと)を記入します。

#!/bin/bash

bashの場所は、which bash で確認すればOKです。

[kusanagi@kusanagi71 DocumentRoot]$ which bash
/bin/bash

そして、ここから処理を書いていきます。
一番簡単な例としては、

echo "こんにちはWorld"

と書いて上げればOKです。ファイル名はhello.shとしておきます。

hello.sh内

1 #!/bin/bash
2
3 #シェルスクリプトのテスト用(コメント)
4 echo "こんにちはWorld"

シェルスクリプトを実行してみる

実行するには、sh {シェルスクリプトのファイル名} を叩いてあげればOK

[kusanagi@kusanagi71 wordpress-test-1st]$ ll
合計 16
drwxr-xr-x. 5 kusanagi kusanagi 4096  2月 19 21:14 DocumentRoot
-rw-rw-r--. 1 kusanagi kusanagi   42  2月 21 17:19 hello.sh
drwxr-xr-x. 4 kusanagi kusanagi   32  2月 19 15:02 log
drwxr-xr-x. 2 kusanagi kusanagi   34  2月 19 14:55 settings
drwxr-xr-x. 2 kusanagi kusanagi   30  2月 19 15:02 tools
-r--r-----. 1 kusanagi www      4184  2月 19 20:58 wp-config.php
[kusanagi@kusanagi71 wordpress-test-1st]$ sh hello.sh
こんにちはWorld

echo出力出ました!

シェルスクリプト「そうねだいたいね〜」

他の超簡単なスクリプトも書いてみた。(バックアップやらログやらはもう少し待ってくれ)

シェルを叩くと「勝手にシンドバッド」の「今何時?」に答えるスクリプト

-rw-rw-r--. 1 kusanagi kusanagi  216  2月 21 17:38 what-time.sh

これを実行すると、

$ sh what-time.sh
そうねだいたいね〜
2019日、02月、21年、時刻17:40:10

[kusanagi@kusanagi71 wordpress-test-1st]$ sh what-time.sh
そうねだいたいね〜
2019日、02月、21年、時刻17:40:10

こんな感じ。だいたいね〜じゃなくてかなり正確な日時を教えてくれるというツンデレっぷり。

終わりに

他のシェルスクリプトを見ていると、シェルスクリプトには法則というかお決まりに沿って書いていくべきなんだろうなと思った。
まずは、定義をして
次に、
if [条件]; then
処理
fi

みたいに場合分けと処理を書く。
という流れになっているので、こんな感じの流れでいろいろ試してみようと思う。

Web技術
スポンサーリンク
新卒IT文系セールスのBLOG

コメント

タイトルとURLをコピーしました