Shellスクリプト

【Shell-TIps】代表的なチェック関数(英数字、数値、プロセス、ポート)を実装する。

現場のシェルスクリプトにおいて、使われる頻度の多い関数はおおよそ下記のとおりです。

  • 英数字チェック
  • 数値チェック
  • プロセスチェック
  • ポートチェック

特に規定はありませんが、「true/false」で判定される関数名には、「is〇〇」や「check〇〇」と言うように命名するのが慣例です。

その他、〇〇を取得する関数には「get〇〇」、〇〇設定する関数には「set〇〇」と言った具合です。一番最初に「動詞」を付けることで、可読性が大きく向上するためです。

チェック関数の作成

英数字チェック「isAlphaNum()」

入力された値が英数字かチェックします。

正規表現「alnum」を使用して、引数「$1」を英数字へ置換しています。置換後の値と引数の値が一致しない場合「1(false)」を返却、一致すれば「0(true)」を返却します。

数値チェック「isNumeric()

入力された値が数値かチェックします。

関数内部で引数「$1」へ数値の「1」を加算しています。失敗すれば数値ではないと判断出来る為「1(false)」を返却、成功した場合は「0(true)」を返却しています。

プロセスチェック「isProcAlive()」

プロセス実行の有無を判定します。

「ps」コマンドで引数「$1」にマッチしたプロセスを抜き出し、その中から「grep -v(除外)」コマンドで「grep」コマンド自体のプロセス及び「$SCRIPT_NAME(実行シェル)」のプロセスを除外しています。最後に抽出した行数をカウントして、0なら「1(false)」を返却、0以外の場合は「0(true)」を返却しています。

ポートチェック「isPortAlive()」

ポートのリスニング有無を判定します。

「netstat」コマンドで通信中の情報の中から引数「$1」にマッチしたポート番号を抜き出し、その中から「grep -w(単語検索)」で一致する文字列「LISTEN」を抽出しています。最後に抽出した行数をカウントして、0なら「1(false)」を返却、0以外の場合は「0(true)」を返却しています。

共通関数定義ファイルへ実装する

実行シェルスクリプトの作成

チェック関数確認用に「httpd」サービスを使用します。

[実行結果]

例として「httpd」プロセスを起動して、シェルスクリプト「check.sh」を実行します。

本スクリプト利用により発生した利用者の損害全てに対し、いかなる責任をも負わないものとし、損害賠償をする一切の義務はないものとします。

よく読まれている記事

1

独立前は、誰もが不安でいっぱい。近い将来、フリーランスとして独立を考えている方が独立初期に躓かないために「独立前にやるべきことチェックリスト」をご紹介します。 当記事は前編となる「お金まわり編」。全て ...

2

ゲームなどのエンタメ分野での導入が進んでいるVR。言葉自体は耳にしたことがあっても、その意味を詳しく知らないという人も多いのではないでしょうか。また、次世代の新たな技術をビジネスに積極的に活用していく ...

3

フリーランスの確定申告には、青色申告と白色申告の2種類があります。いったいどちらの申告方法を選ぶべきなのでしょうか。 この記事では、青色申告と白色申告、それぞれのメリット・デメリットを把握することでベ ...

4

フリーランスの仕事場は、自宅をはじめとし、カフェや図書館、コワーキングスペースなど自由に選べます。しかし全ての場所で100%集中ができるどうかは、人それぞれです。どのような環境が自身の仕事場として快適 ...

5

フリーランスのITエンジニアとして、一番難しいのは「自己管理」と言えるでしょう。 自分の体調管理はもとより、仕事のスケジュール等すべて自分で管理します。もちろんフリーランスに有給休暇等ありませんから休 ...

-Shellスクリプト

Copyright© Beエンジニア , 2020 All Rights Reserved.