You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本判断变量包含关系出错:为何输出‘sad =(’?

Bash脚本判断字符串包含关系不符合预期的原因

你编写了以下Bash脚本,意图判断变量var_2是否包含var_1,但执行后输出sad =(,不符合预期:

var_1="hi"
var_2="bye,hi,hello"
if [[ "$var_1" == *"$var_2"* ]];
then
   echo "value of var_1 in var_2";
else
   echo "sad =(";
fi

问题原因

你搞反了匹配逻辑的左右变量顺序。

在Bash的[[ ... ]]条件判断中,==右侧的*是通配符,正确的子串包含判断语法是:

[[ "目标字符串" == *"要查找的子串"* ]]

这个语法的含义是:检查目标字符串中是否存在要查找的子串。

你的脚本里写的是[[ "$var_1" == *"$var_2"* ]],这相当于判断短字符串hi(var_1的值)是否包含长字符串bye,hi,hello(var_2的值),显然不可能成立,因此脚本进入else分支输出sad =(。

修正后的脚本

把左右变量调换位置,即可实现预期的判断逻辑:

var_1="hi"
var_2="bye,hi,hello"
if [[ "$var_2" == *"$var_1"* ]];
then
   echo "value of var_1 in var_2";
else
   echo "sad =(";
fi

执行修正后的脚本,会输出预期的value of var_1 in var_2。

内容的提问来源于stack exchange,提问作者Drozt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:12