Bash において、変数が特定の文字列で終わるかを確認したいケースがあります。 これ Bash のみで実現が可能です。
[[ ${user_arn} == *Terraformer ]]
Bash における [
と [[
シェルスクリプトで使用される [
がコマンドである事実はよく知られていますが、[[
は bash 等のシェルで独自に実装されています。
$ type '[' [ is a shell builtin $ type '[[' [[ is a reserved word
Bash では [[
と ]]
に対してかなり拡張した実装をしています。これを条件分岐時に使用すると、正規表現マッチの利用ができたり、[
でのハマりどころ (文字列比較で >
をエスケープする必要がある等) が回避できたりします。
そして、Bash においては [[
と ]]
の中においても glob pattern を利用できます。これを利用すれば、文字列末尾の一致確認等が実現できます。
$ [[ hogehoge = hoge* ]] && echo "match" match $ [[ fugahoge = hoge* ]] && echo "match" $ [[ hogehoge = *hoge ]] && echo "match" match $ [[ hogehogefuga = *hoge ]] && echo "match"
Bash における Glob についてはこちらをご参照ください。