Tech Side of 泥やまだ

2011/06/04

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

 ずいぶん苦労したぜ。

 参考: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 [[....]]

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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/dorotech/20110604/1307198519
2010 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2014 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |