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

如何在bash条件表达式中控制特殊参数*输出并解决参数过多问题?

解决bash中判断文件名是否包含指定字符串的问题

问题根源

你原来的命令里,*.l*会被bash自动做通配符扩展,替换成当前目录下所有名字匹配*.l*的文件列表,导致test命令收到远超预期的参数,触发too many arguments错误。

正确解决方案

方法1:使用bash内置条件表达式[[ ]](推荐)

这是bash最简洁的写法,通配符仅作为字符串匹配模式,不会被展开为文件:

if [[ $FI == *.l* ]]; then
    command1  # 替换为你的实际命令
else
    command2  # 替换为你的实际命令
fi

方法2:使用case语句(POSIX兼容)

如果需要在非bash的POSIX shell中运行,case语句是更通用的选择:

case "$FI" in
    *.l*) command1 ;;
    *) command2 ;;
esac

方法3:使用bash正则匹配

如果你习惯用正则表达式,也可以用=~运算符:

if [[ $FI =~ \.l ]]; then
    command1
else
    command2
fi

注意:正则里的.是特殊字符,需要用\转义,确保匹配的是字面意义的点号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:03:29