開発

[ターミナル]本番環境デプロイ等でシェルスクリプトで色付けと入力待ち状態でわかるようにする

デプロイする場合、CI/CDではなくシェルスクリプトで行うこともあります。
その際に誤って本番環境にデプロイしないようにメッセージに色をつけて、「y」と入力するまでスクリプトを実行しないように入力待ちにする方法をまとめます。

メッセージに色をつける

まずはメッセージに色をつける方法は以下となります。

#!/bin/bash
printf "\033[31m 【本番環境】デプロイを行いますか? (y/n) :"

特に重要なのは「\033[31m」となり「[31m」の数字(上記の場合31)が色となります。
色の数字は以下の通りとなります。

コード
30
31
32
33黄色
34
35マゼンダ
36シアン
37

ちなみに「[41m」のように先頭を「4」にすると背景色がつけれるようになります。
また変数で一括で色を設定する場合は以下のようになります。

#!/bin/bash
MESSAGE_COLOR="\033[31m "
printf "${MESSAGE_COLOR} 【本番環境】デプロイを行いますか? (y/n) :"

これで本番は赤、テスト環境は青といった具合に色でわかりやすくしましょう。

入力するまでコマンドを実行しないようにする

上記の色でわかりやすくしておき、実行前に確認するようにしましょう。
上記と組み合わせて以下の方法で入力待ち状態を作ります。

#!/bin/bash
MESSAGE_COLOR="\033[31m "

# 確認メッセージを表示
printf "${MESSAGE_COLOR} 【本番環境】デプロイを行いますか? (y/n) :"

# 「y」と入力するまで待機する
read -p "" YN
if [ "${YN}" != "y" ]; then
exit 1;
fi

シェルスクリプトでデプロイ等をするケースがあった場合は、このように色がわかりやすくしておき確認することで本番で誤ったスクリプトを実行しないようにしましょう。