替代 Bash 双括号 glob 匹配

Stp*_*ane 1 bash test

给定的

hasArgs=a:b:c:
x=b
if [[ ${hasArgs} = *$x:* ]] ; then …
Run Code Online (Sandbox Code Playgroud)

我希望我可以用较少的 Bash 特定替代品替换上面的双括号测试(意味着没有子shell/命令等)

参数扩展没有帮助,因为它不扩展变量。

if [ "${hasArgs}" != "${hasArgs#$x:}" ] ; then …
Run Code Online (Sandbox Code Playgroud)

是否有适合此用例的简单(一行)解决方案?

Dop*_*oti 6

它不是单行代码,但它非常易读并且可以扩展以检查任意数量的参数:

hasArgs="a:b:c"
x=b
case "$hasArgs" in
    *$x*)
        echo "$x is present"
        ;;
esac
Run Code Online (Sandbox Code Playgroud)