#!/bin/bash #ファイルを読み込む case $# in 1) #ファイルの中身が複数行であらわされているため、1行にまとめる paste -d " " -s $1 > result2.txt #ファイルの文字を読み込み、小文字と大文字を1つずつずらして出力していく #小文字と大文字を交互にずらすため #result2.txt.を読み込んで小文字だけずらしたのはresult.txtに #次にresult.txtを読み込んで大文字だけずらしたのはresult2.txtに出力をする #このため、小文字大文字ともに同じだけずらしたのはresult2.txtに出力されているためこれを画面に表示する #アルファベットは全26文字なので、26回ずらせばはじめに与えられた文字に戻る for i in `seq 26` 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 #処理中に作成した一時ファイルを削除する rm result*.txt ;; #以下は引数がなかったときに実行される #することは上のものと全く同じ 0) echo "入力したいファイルを指定してください" read file paste -d " " -s $file > result2.txt for i in `seq 26` 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 rm result*.txt ;; #引数が複数指定されたとき用 *) echo "同時に複数を動かせません。入力したいファイルを一つだけ指定してください" read file paste -d " " -s $file > result2.txt for i in `seq 26` 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 rm result*.txt ;; esac