#!/bin/bash echo R=? read R if [ $R -ge 0 -a $R -le 255 ] then shift else echo "RGBは0から255の範囲で指定してください。" exit fi echo G=? read G if [ $G -ge 0 -a $G -le 255 ] then shift else echo "RGBは0から255の範囲で指定してください。" exit fi echo B=? read B if [ $R -ge 0 -a $R -le 255 ] then shift else echo "RGBは0から255の範囲で指定してください。" exit fi #RGBを引数として渡してもらい、それぞれをR,G,Bとして読み込ませる。RGBが0から255の範囲で指定されなかった場合、エラー処理を行う。 if [ $R -ge 0 -a $R -le 255 -a $G -ge 0 -a $G -le 255 -a $B -ge 0 -a $B -le 255 ] then #RGBが0から255の範囲にあるかどうかの判定 a=$((R/16)) #Rを16で割ったものをaとして定義する。 case $a in 10) a=\a ;; 11) a=\b ;; 12) a=\c ;; 13) a=\d ;; 14) a=\e ;; 15) a=\f ;; esac #aが10ならaを10、11ならaをb、のように10進数を16進数に変換する。 b=$((R%16)) #Rを16で割った時の余りをbとして定義する。 case $b in 10) b=\a ;; 11) b=\b ;; 12) b=\c ;; 13) b=\d ;; 14) b=\e ;; 15) b=\f ;; esac #10進数を16進数に変換する。 c=$((G/16)) #Gを16で割ったものをcとして定義する。 case $c in 10) c=\a ;; 11) c=\b ;; 12) c=\c ;; 13) c=\d ;; 14) c=\e ;; 15) c=\f ;; esac #10進数を16進数に変換する。 d=$((G%16)) #Gを16で割った時の余りをdとして定義する。 case $d in 10) d=\a ;; 11) d=\b ;; 12) d=\c ;; 13) d=\d ;; 14) d=\e ;; 15) d=\f ;; esac #10進数を16進数に変換する。 e=$((B/16)) #Bを16で割ったものをeとして定義する。 case $e in 10) e=\a ;; 11) e=\b ;; 12) e=\c ;; 13) e=\d ;; 14) e=\e ;; 15) e=\f ;; esac #10進数を16進数に変換する。 f=$((B%16)) #Bを16で割った時の余りをfとして定義する。 case $f in 10) f=\a ;; 11) f=\b ;; 12) f=\c ;; 13) f=\d ;; 14) f=\e ;; 15) f=\f ;; esac #10進数を16進数に変換する。 n=$a$b$c$d$e$f #カラーコードをnとして定義する。 else echo "RGBは0から255の範囲を指定してください。" exit #入力されたRGBの値が0から255になければ、”RGBは0から255の範囲を指定してください。”と表示しスクリプトを終了する。 fi if grep -sq $n 'eurocolor.csv' then grep "$n" 'eurocolor.csv' else echo "$n" echo "eurocolor.csv中に対応する色はありません。" fi if grep -sq $n 'jpcolor.csv' then grep "$n" 'jpcolor.csv' else echo "$n" echo "jpcolor.csv中に対応する色はありません。" fi if grep -sq $n 'metrocolor.csv' then grep "$n" 'metrocolor.csv' else echo "$n" echo "metrocolor.csv中に対応する色はありません。" fi #入力されたカラーコードが'eurocolor.csv','jpcolor.csv','metrocolor.csv'それぞれの中に存在すればその名前を出力し、存在しなければ”対応する色はありません。”と出力する。