给定的
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)
是否有适合此用例的简单(一行)解决方案?
它不是单行代码,但它非常易读并且可以扩展以检查任意数量的参数:
hasArgs="a:b:c"
x=b
case "$hasArgs" in
*$x*)
echo "$x is present"
;;
esac
Run Code Online (Sandbox Code Playgroud)