whileループとcase分岐により、誤った入力をしても異常終了しない(しにくい)データ入力スクリプトを作成してみました。
1文字目がdまたはDで始まる文字列を入力すると、日付設定シーケンスへ分岐されます。同様にeまたEで始まる文字列を入力すると、終了シーケンスへ分岐されます。
日付設定を選択すると同じディレクトリ内のdataset.shが実行され、変数${date}に値が入ります。その値に応じて特定のディレクトリのHTML文書が表示され、かつedit_id.shへと引き継がれます。
一方、終了を選択すれば終了します。
それ以外のキーを打ってしまった場合は「もう一度お願いします」と表示されてループの最初に戻ります。
#! /bin/bash while : do printf "D/d) 日付設定 E/e)終了\n" nonewline " " read RESP char=`echo $RESP | cut -c1` case $char in # 日付設定のシーケンス d|D) . ./dateset.sh firefox ./印刷用HTML/${date}raw.html & export keyword=${keyword} export date=${date} export input_date=${input_date} ./edit_id.sh ;; # 終了のシーケンス e|E) kill -9 `pgrep firefox` break ;; # それ以外 ?) echo "もう一度お願いします" ;; esac done
dateset.shやedit_id.shの中でも同様のループを利用して重層的な構造となっていますので、今後数回にわたって紹介して行きます。