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

如何修复使用[命令的Shell if语句运行时报错问题

报错原因

  • [本质是bash内置的test命令,要求最后一个入参必须是],且入参不能直接包含管道语句。你在[内部直接写带管道的命令、用转义括号\(包裹的写法完全不符合[命令的语法规则。
  • 转义后的括号没有触发子shell执行逻辑,反而被拆成了后续命令的参数:grep把后面的\)、]都当成了要搜索的文件名,所以报找不到对应文件的错误;同时[命令没有收到预期的闭合]参数,抛出缺少]的报错。

修复方案

你要判断的是lsusb -t | grep -q 'qmi_wwan'这条命令是否匹配到内容,直接把这条命令放在if后面做判断条件即可,不需要额外套[:

if lsusb -t | grep -q 'qmi_wwan'; then
    echo 'yes'
else
    echo 'no'
fi

说明

grep加-q参数时不会输出任何匹配结果,只会在匹配到内容时返回0状态码,未匹配到返回非0状态码,if会直接判断后面跟的命令的状态码,0则判定为条件成立走then分支,非0走else分支,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:05