#!/bin/bash while read line do echo "$line" >> kadai2_1.txt done</dev/null 2>&1 if [ $? -lt 2 ] then break else echo "aに数字を入力してください" echo a=? read a fi done #aに入力されたのが数字でなければ"aに数字を入力してください"と表示. x=$(( $a % 2 )) y=$(( $a % 13 )) z=$(( $a % 26 )) while [ $x = 0 ] || [ $y = 0 ] || [ $z = 0 ] || [ $a -le 0 ] do echo "aは26と互いに素で0より大きい整数を入力してください" echo a=? read a x=$(( $a % 2 )) y=$(( $a % 13 )) z=$(( $a % 26 )) done #aは26と互いに素で0より大きい整数でないときのエラー処理. echo b=? read b #b=?と表示して入力されるbを読み込む. while : do expr "$b" + 1 >/dev/null 2>&1 if [ $? -lt 2 ] then break else echo "bに数字を入力してください" echo b=? read b fi done #bに入力されたのが数字でなければ"bに数字を入力してください"と表示. echo "F(z)=?" read F #F(z)=?と表示して入力される文字列を読み込む. while : do if expr "$F" : '[0-9]*' > /dev/null ; then echo "文字列を入力してください" echo "F(z)=?" read F else echo $F > quiz.txt break fi done #文字列が入力されないとき、"文字列を入力してください"と表示.もう一度F(z)を読み込む.文字列が入力されたら、quiz.txtに書き込む. while read line do echo "$line" >> kadai2_4.txt x=`awk '{print $2}' kadai2_4.txt` var1=$(expr $a \* $x + $b) var2=$(expr $var1 % 26) echo "$var2" >> kadai2_5.txt rm kadai2_4.txt done< gyo.txt y=`awk '{print $1}' gyo.txt` echo $y >> alpha.txt done< kadai2_3re.txt paste kadai2_3re.txt henkango.txt > result.txt #kadai2_3.txtの2列目を取り出して,kadai2_3re.txtに書き込む. #kadai2_3re.txtとhenkango.txtを横につなげ,result.txtとする. while IFS= read -rN1 c; do printf "$c" > yomikomi.txt x=`awk '{print $1}' yomikomi.txt` echo `grep "$x" result.txt` > kensaku1.txt y=`awk '{print $1}' kensaku1.txt` echo `grep "$y" kadai2_3.txt` > kensaku2.txt echo `awk '{print $1}' kensaku2.txt` >> answer.txt rm yomikomi.txt kensaku1.txt kensaku2.txt done < quiz.txt #quiz.txtから一文字ずつ読み込んでyomikomi.txtに書き込む.yomikomi.txtの中身をxとする. #result.txtからxが存在する行を抜き出して、kensaku1.txtに書き込む. #kensaku1.txtの中身の一列目をyとおく. #kadai2_3.txtからyが存在する行を抜き出して、kensaku2.txtに書き込む. #kensaku2.txtの一列目をanswer.txtに書き出す. #リダイレクションにより実行する度にファイルの最後にデータが増えるのを避けるため、yomikomi.txtとkensaku1.txtとkensaku2.txtを削除 sed '$d' answer.txt > answer2.txt tr -d '\n' < answer2.txt > answer3.txt rm answer.txt answer2.txt #yomikomi.txtのファイルの末尾に空白が入っているためaがanswer.txtの結果に出てきているのを削除するため,sedコマンドを使用.結果をanswer2.txtに書き込み. #answer2.txtは一行に一文字ずつ入ったファイルなので,改行を削除して結果をanswer3.txtに書き込み. echo z=`cat answer3.txt` #answer3.txtの中身を表示 rm *.txt #スクリプト実行で生成されたファイルを削除.