#!/bin/bash #ファイル名入力 #指定するファイル名を入力させる。これら以外が入力された場合の処理は下の「入力エラー処理」を参照。又、何も表示しないechoは出力結果を改行して見やすくするために入れている。 echo echo "以下のファイルから選択して入力してください" echo 1. "kadai1-1_data.txt" echo 2. "kadai1-2_data.txt" echo 3. "kadai1-3_data.txt" echo read filename echo #入力エラー処理 #while : で無限ループを作り、その下のifの条件式に該当するファイル名が入力されるまでファイル名入力を繰り返す。指定された項目以外のファイル名が指定された場合、"上記の3つから選んで入力してください"と表示される。 while : do if [ $filename = kadai1-1_data.txt ] || [ $filename = kadai1-2_data.txt ] || [ $filename = kadai1-3_data.txt ] ; then echo "出力結果を表示します" echo break fi echo "上記の3つから選んで入力してください" echo read filename echo done #caseで場合分け #kadai1-1_data.txtが入力された場合。 case $filename in kadai1-1_data.txt) #出力文字の1行化 #元のファイルのまま読み込んで出力すると、1行で表示されない。そこで、catで出力した文字をvar1とし、1つの変数とみなすと、出力時に1行で表示できるようになる。 #cat kadai1-1_data.txt var1=`cat kadai1-1_data.txt` echo $var1 ;; #caseで場合分け #kadai1-2_data.txtが入力された場合。 kadai1-2_data.txt) #kadai1-1_data.txtと入力された時と同じ処理。 #cat kadai1-2_data.txt var1=`cat kadai1-2_data.txt` echo $var1 ;; #caseで場合分け。kadai1-3_data.txtが入力された場合。 kadai1-3_data.txt) #kadai1-1_data.txtと入力された時と同じ処理。 #cat kadai1-3_data.txt var1=`cat kadai1-3_data.txt` echo $var1 ;; #caseによる場合分け終了 #変数var1の中身が違うので、以下の同様の処理で違う出力結果が出せる。 esac #文字変換 #まず、文字列の小文字を変換する。次に、小文字変換の出力結果を変数にし、大文字の変換を行ってから表示する。最後に、大文字・小文字ともに変換した文字列を変数にし、n+1をして、doに戻る。こうすることで、変換済みの文字列が次の変換対象となる。nが26になった時、即ち、文字変換が26回行われた時、ループは終了する。 n=1 until [ $n = 26 ] do #echo ${var1} | tr "a-z" "b-za" var1=`echo ${var1} | tr "a-z" "b-za"` echo ${var1} | tr "A-Z" "B-ZA" var1=`echo ${var1} | tr "A-Z" "B-ZA"` n=$((n+1)) done echo #終了