# Shell : if文でper Command check

作成理由:

Healthcheck Script(2021/12/19)を作成して作業で使ってみた。
以前よりはHealthcheckの時間は短縮できたけど、
オペレーターと作業者の間Command実行結果について、確認しなければならない。

一回くらいならいいけど、Scale outごとにHealthcheckを実施するため、
お互い疲れてしまう。

それでチームの人と相談して、最後のLineに全てのStatus確認結果を分かるように
Scriptを修正することにした。

最終コードLink

https://velog.io/@jcy9033/OpenStack-CloudBand-Infrastructure-Healthcheck-scriptAll-Status-CheckFixing


作成Point
### [2021/12/29]
# 01. なるべく確認コードのTemplateは少なくする

# 02. 確認に必要なコマンドをif文へそのまま入れると可読性が落ちるため、
# grepなどに使うkeywordという変数を入れる

# 03. なるべくファイルは作らずに処理できるようにする(管理が面倒)

# 04. Backgorundで処理時間を節約する
# まだ、望む順番で実行できるかは分からない

# 05. SizeでStatusを確認する場合、固定値ではなく範囲でCheckする
# Sizeが若干変わる箇所に適用

まず、if文のTemplateを作成みたが、失敗(・ω・)ノ

status_ok="OK"
status_ko="KO"
keyword="complete"
check_command="grep -i 'complete' test.txt"

if [ "${check_command}" == "complete" ] ; then
  echo ${status_ok}
else
  echo ${status_ko}
fi

Console上では問題なく動作したが、なぜ変数としては動作しないのか
色々試して見た結果、原因は [' ']だった。

#not work
chekc_command="grep -i 'complete' test.txt"

#work
chekc_command="grep -i complete test.txt"

#work
chekc_command="grep -i ${keyword} test.txt"

変数指定の際は、クォーテーションに注意が必要そうだ。

좋은 웹페이지 즐겨찾기