コマンド実行ツールの使い方
このツールは 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な内容が記載されていれば消してください。
ブログ
個人のブログにも書いてます。
感想
作ったけど&&でコマンド繋ぐ方が普通に良くて使っていない。。