デュアルブラケットのグローバルマッチングに対するBashの代替

デュアルブラケットのグローバルマッチングに対するBashの代替

一方

hasArgs=a:b:c:
x=b
if [[ ${hasArgs} = *$x:* ]] ; then …

上記の二重括弧テストをBashにあまり特殊化されていない代替(サブシェル/コマンドなどがないことを意味する)に置き換えることができることを願っています。

パラメータ拡張は変数を消費しないため役に立ちません。

if [ "${hasArgs}" != "${hasArgs#$x:}" ] ; then …

このユースケースに適した単純な(1行)ソリューションはありますか?

ベストアンサー1

1行のコードではありませんが、非常に読みやすく拡張して複数の引数を確認できます。

hasArgs="a:b:c"
x=b
case "$hasArgs" in
    *$x*)
        echo "$x is present"
        ;;
esac

おすすめ記事