LoginSignup
0
0

コマンド自動実行ツール

Last updated at Posted at 2023-06-16

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

このツールは 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な内容が記載されていれば消してください。

ブログ

個人のブログにも書いてます。

感想

作ったけど&&でコマンド繋ぐ方が普通に良くて使っていない。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0