#!/bin/bash echo "表示ファイルを入力してください" while true;do #表示したいファイルを入力させ、入力されたものを変数filenameに代入する #正しいファイル名が入力されるまでfilenameへの代入を繰り返す read filename #正しいファイル名が入力された場合はbreak;;でループから抜け出す case $filename in kadai1-1_data.txt) echo "kadai1-1_data.txtの結果を表示します" break ;; kadai1-2_data.txt) echo "kadai1-2_data.txtの結果を表示します" break ;; kadai1-3_data.txt) echo "kadai1-3_data.txtの結果を表示します" break ;; *) echo "そのようなファイルは存在しません、もう一度入力してください" esac done #ファイルの中身は複数行でセットになっているので、各セットを1行にまとめたnew.txtを作る cat $filename | paste -s -- > "new.txt" #new.txt内の文字を読み込み、まず小文字のみを1文字ずらしresult.txtに保存する tr 'a-z' 'b-za-b' < "new.txt" > "result.txt" #小文字のみずらされたresult.txt内の文字を読み込み、続いて大文字のみを1文字ずらしresult2.txtに保存する tr 'A-Z' 'B-ZA-B' < "result.txt" > "result2.txt" #小文字も大文字もずらされたresult2.txt内の文字をコンソールに出力する cat "result2.txt" #result2.txt内の文字を再び小文字、大文字の順にずらす #ずらす度に出力するため、result.txtとresult2.txtを交互に上書きしてしまって構わない #アルファベットは全26文字なので、26回ずらせばはじめに与えられた文字に戻る for i in `seq 1 25` do tr 'a-z' 'b-za-b' < "result2.txt" > "result.txt" tr 'A-Z' 'B-ZA-B' < "result.txt" > "result2.txt" cat "result2.txt" done #shift-1.txt内の文字列を大文字、小文字の順に一字ずつずらしてshift-0.txtに上書き cat shift-0.txt #shift-0.txtの中身を表示 done rm shift* #実行後は不要になるので、作ったファイルを消す else # echo '実行時には、kadai1-1_data.txt, kadai1-2_data.txt, kadai1-3_data.txtのいずれかを指定してください' fi #終了