Humanity

Edit the world by your favorite way

シェルプログラミングの勉強


ふと必要になってsrchスクリプトっていうのを作ってみた。
ていうかただのファイルの中身を検索するシェルスクリプトなんだけども。
[-d ディレクトリ]でディレクトリのファイルを検索。
[-r]で再帰的にディレクトリ以下のディレクトリ(以下のディr(ry )も検索。
これだけだけど丸一日かかった。
更にfindコマンドっぽくexecオプションも作ろうかと思ったけど挫折したorz


key_flag=0
dir_flag=0
recursive_flag=0
DIR=.


for arg in $*
do
   case $arg in
   
   -h|--help)
      echo "		srch [--help|-h][-d DIR][-r] keyword"
      echo "	--help,-h	This help text"
      echo "	-d DIR		Search under DIR(default is \'.\')"
      echo "	-r		Search recursively"
      echo "	-exec		This option has not been valid yet."
      exit 0
      ;;
   -d)
      dir_flag=1
      ;;
   -r)
      recursive_flag=1
      ;;
    *)
      if [ $dir_flag -eq 1 ]; then
         if [ -d $arg ]; then
            DIR=$arg
            dir_flag=2
         else
            echo "${arg}: No such directory."
            exit 1
         fi
      else
         KEY=$arg
         key_flag=1
      fi
      ;;
   esac   
done

if [ $key_flag -eq 1 ]; then
   if [ $recursive_flag -eq 1 ]; then
      find $DIR | xargs grep $KEY
   else
      ls $DIR | xargs grep $KEY
   fi
else
   echo "No keyword."
   exit 1
fi

初めてちゃんとしたシェルスクリプト書いた気がするな・・・
再帰的に検索するとかlsとfindを使い分けるだけだけど・・・
PS:途中ググったらこんなページ見つけた。もうあったのかorz