部分文字列マッチングを使用してbash配列から要素を返す方法は?

部分文字列マッチングを使用してbash配列から要素を返す方法は?

いくつかの要素を含むbash配列があり、そのうちの1つだけがnn.wr型です。ここで、nnは変更可能な整数です。

例えば

array=( "abcd" "01.wr" "ef_gh" )

ただし、配列のどこにでも配置できます。どうやって見つけて返却できますか?部分一致*.wrを使用しようとしていますが、sedまたはawkを使用できません。

明らかに方法があるでしょう! !

ベストアンサー1

sedまたは同じ外部コマンドは必要ありませんawk。要素を繰り返し、パターンマッチングを使用します。

#! /bin/bash
array=( "abcd" "01.wr" "ef_gh" )
unset found
for e in "${array[@]}" ; do
    if [[ $e == +([0-9]).wr ]] ; then
        found=$e
        break
    fi
done

[[ $found ]] && echo "$found"

おすすめ記事