シェルスクリプトで任意の文字入力待ち→入力→確認→完了 を作成

ウェブの入力フォームのようにLinuxのシェルスクリプトで再現します。再現するためには入力を受け付ける「READ」と画面遷移のように確認→完了を再現するために繰り返し「while」「case」を使用します。

read 入力を受け付ける

readコマンドでユーザーから入力を受け付ける部分を作成します。オプション「-p」を付けると入力する前に表示するプロンプトの文字を設定できます。

・使用例

echo "+-------------------------------------------------------+"
echo "文字を入力してください。"
echo "+-------------------------------------------------------+"
read -p ":" INPUT_STR
echo "入力した文字は[$INPUT_STR]です。"
read -p "ENTERキーを押してください。"

while true do done で無限に繰り返す

while trueにすれば無限に繰り返します。これを利用して確認から文字入力に戻るところを再現します。繰り返しのループから抜けるにはbreakを使用します。

・使用例

#!/bin/bash
i=0
while true
do
  echo $i
  i=`expr $i + 1`
  if [ $i -eq 10 ]; then
    break
  fi
done

case

caseを利用して確認画面のYes、noの処理を作成します。

・使用例

#!/bin/bash
read -p " (y/n):" CHECK_YN
case "$CHECK_YN" in
[yY])
    echo "YES"  
;;
[nN])
    echo "NO"
;;
esac
read -p "ENTERキーを押してください。: "
clear

文字入力→確認→完了

「read」「while」「case」を使って任意の文字入力→確認→完了 を完成させます。
以下がサンプルコードになります。

#!/bin/bash
while true
do
clear
echo "+-------------------------------------------------------+"
echo "文字を入力してください。"
echo "+-------------------------------------------------------+"
read -p ":" INPUT_STR
echo "+-------------------------------------------------------+"
echo "入力した文字は[$INPUT_STR]でよろしいですか?"
echo "+-------------------------------------------------------+"
read -p " (y/n):" CHECK_YN
case "$CHECK_YN" in
  [yY])
echo "+-------------------------------------------------------+"
echo "完了しました。"
echo "+-------------------------------------------------------+"
  ;;
  [nN]) echo "作成はキャンセルされました。" ;;
esac

read -p "処理を終了しますか? (y/N): " yn
case "$yn" in
  [yY]) break
  ;;
esac
done
read -p "ENTERキーを押してください。: "
clear

シェアする

  • このエントリーをはてなブックマークに追加

フォローする