コマンド実行自動化ツール

GitHub

手順書の作業を実行するのが面倒なので作った

github.com

コマンド実行ツールの使い方

このツールは commands.txt ファイルに記述されたコマンドを順に実行します。コマンドとそれに関連する説明を#で区切って記述することができます。

commands.txt の記述例

bash

echo 'コマンド 1'#コマンド1の説明
echo 'コマンド 2'#
vi hoge.txt#viエディタでhoge.txtを開く

このツールを実行すると、各コマンドの説明が表示された後に、そのコマンドを実行するかどうかの確認メッセージが表示されます。確認メッセージに対して y または Y を入力すると、該当のコマンドが実行されます。

s または S を入力すると、そのコマンドはスキップされ、次のコマンドに進みます。それ以外を入力すると、ツールは終了します。

説明がない場合はコマンドの末尾に#のみつけてください。

execute.sh

# コマンドを格納する配列を初期化
commands=()
# commands.txt ファイルを一行ずつ読み込み、その内容を配列 commands に追加
while IFS= read -r line; do
  commands+=("$line")
done < commands.txt

# 配列 commands の各要素(コマンド)について処理
for cmd in "${commands[@]}"
do
    # 各コマンドから説明部分とコマンド部分を分離
    cmd_part=${cmd%%#*}
    explanation_part=${cmd#*#}

    # 説明部分が存在すれば表示
    if [ "$explanation_part" ]; then
        echo "$explanation_part"
    fi

    # ユーザーに対しコマンドの実行確認メッセージを表示し、入力を待つ
    read -p "=====$cmd_part を実行しますか?(y/n/s)" -n 1 -r
    echo    # 改行

    if [[ $REPLY =~ ^[Yy]$ ]]   # 'Y' または 'y' が入力された場合
    then
        # コマンドを実行
        echo "=====$cmd_part 実行"
        eval $cmd_part
        echo    # 改行
    elif [[ $REPLY =~ ^[Ss]$ ]]   # 'S' または 's' が入力された場合
    then
        # 何もせずに次へ
        true
    else
        # 上記以外の入力がされた場合、スクリプトを終了
        echo "YySs以外が押された為、ツールを終了します"
        exit 1
    fi
done

commands.txt

echo 'コマンド1'#
echo 'コマンド2'#
vi hoge.txt#hogehogeな内容を記入し、fugafugaな内容が記載されていれば消してください。