#!/bin/bash echo a=? #'a=?'と表示。 read a #aを読み込む。 while [ $(( $a % 2 )) = 0 ] || [ $(( $a % 13 )) = 0 ] do echo "26と互いに素な数を入れてください。" echo a=? read a done echo b=? #'b=?'と表示。 read b #bを読み込む。 echo c=? #'c=?'と表示。 read c #cを読み込む。 while [ ${#c} -ne 6 ] #もしcの文字数が6でなければ、 do echo "6文字で入力してください。" #"6文字で入力してください。"と表示。 echo c=? read c done declare -a array #配列arrayを定義。 for loop in {a..z} #aからzまでをloopに代入する。 do array+=( "$loop" ) #arrayの末尾に代入したaからzを追加する。 done for loop in {0..25} #0から25までをloopに代入する。 do echo ${array[$loop]} #arrayの代入した0から25番目の要素を表示。 done > quiz2-1.txt #標準出力をquiz2-1.txtにつなげる。 for ((i=1;i<7; i++)) #i=1から6まで繰り返す。 do echo $c | cut -c $i > quiz2-2.txt #cのi番目を取り出してquiz2-2.txtにつなげる。 x=$(grep -f quiz2-2.txt -n quiz2-1.txt | cut -f 1 -d ":") #quiz2-2.txt内のアルファベットがquiz2-1.txtの何行目のアルファベットと一致するかを、行番号で表示して、それを変数xとする。 y=`expr $x - 1` #xから1引いたものを変数yとする。 echo $y >>quiz2-3.txt #yをquiz2-3.txtの末尾に追加する。 done for loop in `cat quiz2-3.txt` #quiz2-3.txt内の数字を1つずつloopに代入する。 do for i in {0..25} #0から25までをloopに代入する。 do z=$((($a*$i+$b)%26)) #(a× i+b)÷ 26の計算結果をzとする。 if [ $loop = $z ] #もしloopとzが、 then echo -n ${array[$i]} #等しければarrayのi番目の要素を表示。 fi done done >> quiz2-4.txt #標準出力をquiz2-4.txtの末尾に追加する。 echo z=`cat quiz2-4.txt` #quiz2-4.txtの中身を表示。 rm quiz2-*.txt #quiz2-1から2-4までを削除する。