一方
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