bash - extglob 2番目の「0個以上」演算子が機能しません。

bash - extglob 2番目の「0個以上」演算子が機能しません。

一方:

$ shopt -s extglob
$ TEST="    z abcdefg";echo ">>${TEST#*( )z*( )}<<"
>> abcdefg<<

文字「a」の前にスペースがあるのはなぜですか?二度目も*( )空間にふさわしくしたかったのですが、そうするには適していませんね。

私は次の結果を期待しています:

$ echo ">>$(echo -n "${TEST}" | perl -pe "s/^ *z *//g")<<"
>>abcdefg<<

*( )次の文字(「a」など)を指定すると、2番目の文字が一致します。

$ shopt -s extglob
$ TEST="    z abcdefg";echo ">>${TEST#*( )z*( )a}<<"
>>bcdefg<<

ヒットバージョン: GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

ベストアンサー1

${TEST#...}最も短い文字列、zの後にスペースがない文字列と一致します。あなたは${TEST##...}最長のマッチが欲しいです。

おすすめ記事