Bash でコマンド実行前に確認するイディオムおさらい

毎回忘れるので専用の記事を作ることにした。

Windows コマンドプロンプトだと set /p を使うヤツ。

Set confirm=
Set /p confirm=よければ Enter を押してください・ダメなら n を入力してください

If '%confirm%'=='n' (
  Rem キャンセルの場合
  Goto LABEL_CANCEL
)

Rem 通常の処理

コレの Bash 版。Bash の場合は read -p '【メッセージ】' 【変数名】 という構文で実現できる。

read -p '実行してよろしいですか? (y/n) :' yn

# 「y」と入力されなかった場合は中止にする
if [ ! "${yn}" = 'y' ]; then
  echo '中止します。'
  exit 1
fi
read -p '実行してよろしいですか? (Y/n) ' yn

# 「y」か「Y」の場合はこの処理、それ以外はこの処理、といった分岐を case 文で行う
case "${yn}" in
  [yY]) echo '実行します。'
        echo '実行しました'
        ;;
     *) echo '中止します。'
        return 1
        ;;
esac

Set /pread -p。プロンプトの P かな?そろそろ覚えねば…。