簡単な対話型データ入力(2)

日付設定シーケンスの中身を担うdateset.shについてです。

やはり whileループを回しています。日付を6桁の整数で要求されますが、これは既存のデータベースの形式と整合させるためです。データベースのホスト名他詳細は${host_name}などとして秘匿しています。テーブル中に入力した日付が存在すればシェル変数${file}に値が入ります。

その場合、if文の分岐で真の側に進み、keyword,date,input_dateなどの変数を作成することになります。最後にbreak文でループを抜け、main.shへ戻ります。ちなみに、このdateset.shはmain.shの中でカレントシェルとして実行していますので、dateset.sh中で作成したkeyword,date,input_dateなどの変数の値はmain.shへ引き継がれます。

#! /bin/bash

 while :
 do
  nonewline "授業の日を6桁の数字で入力して下さい "
  read RESP
  file=`mysql -N -h ${host_name} ${db_name} << _SQL_
   select file from ${table_name} where file like "${RESP}%";
_SQL_`
  if [ ! -z ${file} ]
  then
   YY=`echo ${file} | cut -c1-2`
   MM=`echo ${file} | cut -c3-4`
   DD=`echo ${file} | cut -c5-6`
   keyword="20${YY}-${MM}-${DD}"
   date=${YY}${MM}${DD}
   nonewline "リスニング日を6桁の数字で入力して下さい "
   read RESP
   YY=`echo ${RESP} | cut -c1-2`
   MM=`echo ${RESP} | cut -c3-4`
   DD=`echo ${RESP} | cut -c5-6`
   input_date="20${YY}-${MM}-${DD}"
   break
  else
   printf "その日付は存在しません\n"
  fi
 done