🦖

シェルスクリプトの基礎⑦~case文~

2021/01/11に公開

はじめに

くーばねてすをやっつけるためにLinuxさんと仲良くさせていただいているが、Linuxさんにはシェルのコマンドを格納しておくシェルスクリプトというファイルがあるらしいのでそれをまとめてみた。

概要

■case文

をまとめた^^

case文とは

文字列がパターンにマッチするか判断し、マッチしたパターンに対してのみ処理を行う構文だ。
case文書式

case書式
case 文字列 in
	パターン1)
		処理
		;;
	パターン2)
		処理
		;;
esac

えざっく!?(>_<)えざっくって誰!?えがちゃん!?
※esacはcaseを逆にした意味で終わりって意味みたいです。
さっそくやってみる!
コマンドライン引数にファイル名を指定して.txtファイルだったらlessコマンドを実行、
.shファイルであればcatコマンドを実行、それ以外はサポート外ファイルですと表示させる。
ファイルの指定にワイルドカードを使う。

casefile.sh
$ cat casefile.sh
#! /bin/bash
case "$1" in
	*.txt)
		less "$@"
		;;
	*.sh)
		cat "$@"
		;;
	*)
		echo "サポート外ファイルです"
		;;
esac

$ ./casefile.sh unko
サポート外ファイルです

できた!(>_<)ちなみに;;の位置は処理の行の処理の後ろにつけてもいいらしい。

case書式
case 文字列 in
	パターン1)
		処理 ;;
	パターン2)
		処理 ;;
esac

むしろ全部同じ行でもいいらしい('_')!

case書式
case 文字列 in
	パターン1) 処理 ;;
	パターン2) 処理 ;;
esac

case文はif文で1つ1つ比較するよりさらに文字列に対する処理に特化しており、たくさんの文字列に対する処理をするときに向いている。
またパターンの指定には|を使うこともできる。

#! /bin/bash

case "$1" in
	start|stop) echo "OK" ;;  (startまたはstopだった場合)
	*) echo "NG" ;;
esac

文字列特化型なんだね!(@_@)

まとめ

今日は寒すぎてお外出れなかったんだけど、辛ラーメン煮て食べたら汁が目に飛んですごく目が痛くなったから、気を付けてね!
できれば眼鏡をかけて食べたほうがいいと思った。ゴマ油をかけると少しマイルドになるのかなって思う。

Discussion