本サイト/記事は移転しました。

約10秒後にリダイレクトします。

シェルスクリプトの正規表現

 ずいぶん苦労したぜ。
 参考:bashの正規表現マッチングの使い方

if [[ "$1" =~ ^ab[cd]$ ]] ; then
	echo "matched"
else
	echo "unmatched"
fi

 ところが実行してみると

kazz@kazz:~/temp$ sh test02.sh abc
test02.sh: 5: [[: not found
unmatched
kazz@kazz:~/temp$

 ずいぶん悩んだが、解決。

kazz@kazz:~/temp$ bash test02.sh abc
matched
abc
kazz@kazz:~/temp$

 bashに食わせなければならなかったとは。けっこう方言があるんやね。


 こんな書き方も見つけた。
 参考:シェルスクリプトのif文で正規表現を使う方法 - FreeBSD初心者運用日記 - freebsdグループ

if expr "$1"  : "^ab[cd]$" >/dev/null ; then
	echo "matched"
else
	echo "unmatched"
fi

 こっちは比較的スムーズにできた。

kazz@kazz:~/temp$ sh test01.sh abc
matched
kazz@kazz:~/temp$

 まだ先は長そう。

if [[....]]

と書くときの真偽の反転の仕方が分からん。ついでに、はてなダイアリーの素の文で上記を表示させる方法も分からん。はてなダイアリー記法に引っかかってしまうんのよね。