シェルスクリプトで正規表現マッチ
シェルスクリプトで引数による条件分岐をする際にif
文の列挙やcase
文を利用する場合は多々あると思いますが、
単純に引数のチェックのみを行いたいときはbashの正規表現マッチで調べるのが簡単です。
bashでの正規表現マッチ
例えば、第一引数が正規表現^h.+ge$
とマッチしているかを調べる場合には、以下のように記述します。
if [[ "$1" =~ ^h.+ge$ ]]; then
if
文内で=~
で比較すると正規表現比較になります。
このとき、正規表現はダブルクォートで囲わない点に注意。囲ってしまうと普通の文字列比較になってしまいます。
例
#!/bin/bash # 第一引数は start, stop, restartのいずれか if [ $# -ne 1 ];then echo "Usage: $ ./hoge.sh (start|stop|restart)" elif [[ "$1" =~ ^(start|stop|restart)$ ]]; then /path/to/hoge $1 else echo "不明な引数です: $1" exit 1 fi