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

Ubuntu下Bash脚本中如何正确输出逻辑表达式执行结果?

解决Bash脚本中子串匹配结果输出问题

你的代码存在两个关键错误,导致无法正常运行:

错误1:变量赋值包含空格

Bash中变量赋值时,=左右不能有空格,否则Shell会把变量名当成命令执行,引发错误。原代码里的var1 = 'abc'和var2 = 'bc'写法错误,必须去掉空格。

错误2:条件表达式的结果获取方式错误

[[ $var1 =~ $var2 ]]是Bash的条件判断语句,它不会直接返回可插值的1/0结果,而是通过退出状态码表示结果(0为真,1为假)。你不能直接用$[[ ... ]]的方式获取结果,可通过以下两种方式处理:

方法1:先执行判断,再获取退出状态码

var1='abc'
var2='bc'

# 执行子串匹配判断
[[ $var1 =~ $var2 ]]
# $? 表示上一条命令的退出状态码,转换为1(真)或0(假)
result=$(( !$? ))
echo "Print result: $result"

解释:[[ ... ]]匹配成功时退出状态码为0,!$?会将其转为1,符合预期输出。

方法2:直接在算术表达式中判断

var1='abc'
var2='bc'

# 用算术表达式的三元运算符直接返回1或0
echo "Print result: $(( [[ $var1 =~ $var2 ]] ? 1 : 0 ))"

解释:Bash算术支持三元运算符,[[ ... ]]为真时返回1,否则返回0。

两种方法都能输出你想要的Print result: 1结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:09:50