#!/bin/bash
# トップ画面
function TOPVIEW()
{
echo "1)クイズ開始"
echo "2)このアプリを終了"
echo "3)アプリについて"
echo "4)クイズ正解率"
while
echo -n "1,2,3,4を選択してください:"
read ANS
do
case $ANS in
1)
echo "正解"
break;;
2)
echo "終了します";;
3)
echo "クイズアプリです";;
4)
echo "正解率は";;
*)
echo "答えは1,2,3,4で入力";;
esac
done
}
# 問題作成
function QUIZ01()
{
echo "問題文"
echo "(a)答えa(b)答えb(c)答えc"
while
echo -n "答えをa,b,cで入力してください:"
read ANS
do
case $ANS in
a)
echo "正解"
break;;
b)
echo "はずれ";;
c)
echo "はずれ";;
*)
echo "答えはa,b,cで入力";;
esac
done
}
function QUIZ02()
{
echo "問題文"
echo "(d)答えd(e)答えe(f)答えf"
while
echo -n "答えをd,e,fで入力してください:"
read ANS
do
case $ANS in
d)
echo "正解"
break;;
e)
echo "はずれ";;
f)
echo "はずれ";;
*)
echo "答えはd,e,fで入力";;
esac
done
}
最初の選択でクイズ開始を選択すると問題文に移行、、
終了を選択すると終了できるようにしたいのですが、
設定がわかりません
どなたか教えてください
お願いします
No.1ベストアンサー
- 回答日時:
正解率を計算するには、関数から return で値を返して
$? で受け取れば良いと思います。
スクリプトの終了は exit です。
クイズの問題自体は、関数の呼び出しを羅列すれば順番に実行されます。
グローバルな問題数定数 ploblems と、2つの補助関数 usage, rate を
追加しました。
スクリプトの最後でメイン関数 TOPVIEW を呼び出します。
#!/bin/bash -ex
declare -g problems=2
usage(){ cat <<_EOS_
1)クイズ開始
2)このアプリを終了
3)アプリについて
4)クイズ正解率
_EOS_
echo -n "1,2,3,4を選択してください:"; }
rate(){ echo "正解率は $(echo "scale=1;$1/$problems"|bc)"; }
function TOPVIEW()
{
local q=0
while
usage
read ANS
do
case $ANS in
1) q=0
QUIZ01; q=$(expr $q + $?)
QUIZ02; q=$(expr $q + $?)
rate $q;;
2) echo "終了します"; exit;;
3) echo "クイズアプリです";;
4) rate $q;;
*) echo "答えは1,2,3,4で入力";;
esac
done
}
function QUIZ01()
{
local q=0
echo "問題文"; echo "(a)答えa(b)答えb(c)答えc"
while
echo -n "答えをa,b,cで入力してください:"
read ANS
do
case $ANS in
a)
echo "正解"
q=1
break;;
b)
echo "はずれ"
break;;
c)
echo "はずれ"
break;;
*)
echo "答えはa,b,cで入力";;
esac
done
return $q
}
function QUIZ02()
{
local q=0
echo "問題文"
echo "(d)答えd(e)答えe(f)答えf"
while
echo -n "答えをd,e,fで入力してください:"
read ANS
do
case $ANS in
d)
echo "正解"
q=1
break;;
e)
echo "はずれ"
break;;
f)
echo "はずれ"
break;;
*)
echo "答えはd,e,fで入力";;
esac
done
return $q
}
TOPVIEW
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- ルーター・ネットワーク機器 echoshow8の音声をBluetoothを介してパソコンで出力するやり方を教えて下さい。 3 2023/04/03 17:09
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- その他(プログラミング・Web制作) zshの例外処理 1 2022/06/02 16:36
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでpingの結果を...
-
DBから行を取得したフィールド...
-
Windowsのsetコマンドでの小数...
-
Dosブロンプトでtabを出力したい
-
phpでcookieがうまく保存されない
-
shシェルスクリプト 空白行の...
-
ps3で久しぶりにCDの音楽情報取...
-
wordの差し込み印刷で文字...
-
php 入力画面から確認表示画面...
-
Yahoo! JAPAN IDを新規取得でき...
-
テレビ番組表
-
VB.NETで他のアプリが完全に起...
-
PHPでページング
-
VB or VBScriptでPCの製造番号...
-
PHPで値を保持する方法
-
WordでExcelデータを差込...
-
MSFlexGridのデータを初期化し...
-
DTOとEntityの差は何ですか。
-
日本時間
-
6ヶ月前の日付を取得するにはど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
PHPで訪問回数を表示するカウン...
-
ゼロとNULLを区別して number_f...
-
bashの関数の引数にスペースが...
-
ナベアツプログラム(3の倍数...
-
変数の受け渡しによる画像の表示
-
PHP一覧表示した項目にリンクを...
-
Windowsのsetコマンドでの小数...
-
Parse error というエラーの対...
-
pdftkを使った処理をバッチファ...
-
DBのハッシュ化したパスワード...
おすすめ情報