JP1/Advanced Shell

[目次][用語][索引][前へ][次へ]


5.1.7 パターンマッチング

JP1/Advanced Shellでは,一部の標準コマンドやスクリプト制御文でパターンとの比較ができます。例えば,「${variable#pattern}」の書式の場合,変数variableの値のうち,パターンpatternと一致する部分で最も短い部分を削除した値に置換します。使用例を次に示します。

使用例
 
$ var=abcd
$ echo ${var#a[b]}
cd
 

パターンと比較できるかどうかは機能ごとに決まっています。パターンの書式が不正な場合,パターンを通常の文字列として比較します。例えば,「[a*(b])」の場合,本来パターンとして特別な意味を持つ「[」,「*(」および「]」はすべて通常の文字として比較されます。使用例を次に示します。

使用例
 
$ var='[a*(b])cd'
$ echo ${var#[a*(b])}
cd
 

パターンの書式が不正と判定される場合を次の表に示します。

表5-18 パターンの書式が不正と判定される場合

パターンの書式が不正と判定される場合
「[ ]」に囲まれた文字列で,「(」に対応する「)」がありません。 [a*(b])
「( )」に囲まれた文字列で,「[」に対応する「]」がありません。 *(a[b)c]
「[ ]」に囲まれた文字列が,「( )」に囲まれていない「|」を含みます。 *(a[foo|bar]) a[foo|bar]
「[」に対応する「]」がありません。 [a

注1
「[ ]」に囲まれた文字列では,「[」は文字として扱います。例えば,「[[a]」はパターンの書式として正当となります。この場合,最初の「[」は「]」に対応し,2つ目の「[」は文字として扱います。

注2
「[」の直後および「[!」の直後の「]」は,文字として扱うため不正と見なされません。

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.