#!/bin/bash for xx in 05 06 07 08 09 11 10 12 13 14 do cat 20$xx-??.csv | tr -d ')' | tr -d ']' | cut -d ',' -f 8 > highest_temp_20$xx.txt done #20〇〇-〇〇.csvという形のファイル中の')'と']'を、trコマンドを用いて削除し、cutコマンドを用いて','で区切られた8列目(最高気温)の数値だけを取り出したファイルhighest_temp_20〇〇.txtを作る。 echo "表示したいデータの番号を入力してください 1.猛暑日の日数 2.真夏日の日数 3.夏日の日数" read number #表示したい番号を選ばせて、入力された数値を読む。 case $number in #入力された数値が 1) #1の場合 for xx in 05 06 07 08 09 10 11 12 13 14 do a=` cat highest_temp_20$xx.txt | awk '{if($1 >= 35){print $1}}' | wc -l ` echo 20$xx年 $a日 done #「最高気温だけをまとめたファイルの数値で、35を超えるものの数を数える」という命令をバッククォーテーションマークで囲い、返った数値を変数aとする。 #echoコマンドにより年と変数aを出力する。 #以上をforを用いて2005〜2014まで繰り返す。 ;; #1の場合を終了 2) for xx in 05 06 07 08 09 10 11 12 13 14 do a=` cat highest_temp_20$xx.txt | awk '{if($1 >= 30){print $1}}' | wc -l ` echo 20$xx年 $a日 done ;; #入力された数値が2の場合も、1の時と同様に行う。 #ただし数える対象は、30を超えるものに変更してある。 3) for xx in 05 06 07 08 09 10 11 12 13 14 do a=` cat highest_temp_20$xx.txt | awk '{if($1 >= 25){print $1}}' | wc -l ` echo 20$xx年 $a日 done ;; #入力された数値が3の場合も、1の時と同様に行う。 #ただし数える対象は、25を超えるものに変更してある。 *)echo "入力された数値は選択肢にありません。 はじめからやり直してください。" ;; #1〜3以外の数値が入力された場合は、echoによりエラーを表示してスクリプトを終了する。 esac #場合分けを終了 rm highest_temp_20**.txt #最後に、一時的に作った最高気温だけをまとめたファイルを削除する。