#!/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ランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
小数点以下0の非表示
-
バッチファイルでpingの結果を...
-
phpでcookieがうまく保存されない
-
findstrのerrorlevel
-
shシェルスクリプト 空白行の...
-
syntax error, unexpected 'ech...
-
オブジェクトの中身の判定(PHP)
-
$_SERVER["REQUEST_METHOD"]に...
-
画像の削除
-
三項演算子/echoとprintの違い
-
ナベアツプログラム(3の倍数...
-
Windowsのsetコマンドでの小数...
-
電話番号入力確認 やっぱり分...
-
シェルで正規表現 YYYY/MM/DD
-
Javascriptの関数をPHPで作りま...
-
PHPでのパスワード制限のセキュ...
-
ダブルクウォートやヒアドキュ...
-
bashの関数の引数にスペースが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
phpでcookieがうまく保存されない
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
syntax error, unexpected 'ech...
-
findstrのerrorlevel
-
バッチファイルで、全てのウィ...
-
PHPで訪問回数を表示するカウン...
-
PHP一覧表示した項目にリンクを...
-
DBのハッシュ化したパスワード...
-
小数点以下0の非表示
-
Windowsのsetコマンドでの小数...
-
オブジェクトの中身の判定(PHP)
-
PHPでのパスワード制限のセキュ...
-
bashの関数の引数にスペースが...
-
RSSにdiv,ul classを付けたいの...
-
pdftkを使った処理をバッチファ...
-
ゼロとNULLを区別して number_f...
-
コマンドプロンプト フォルダ内...
おすすめ情報