Shellスクリプト

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

2020年5月15日

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

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

特に規定はありませんが、「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

目次1 Shellとは?1.1 代表的なシェルの種類2 シェルスクリプトの違いとは? Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロ ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shellスクリプト

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