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

Shell脚本条件比较失效,执行报错“[0:命令未找到”求助

解决bash脚本中条件判断报错“[0:命令未找到”的问题

看了你的脚本和报错信息,问题出在bash条件判断的语法格式上,具体来说是条件判断行的写法不符合bash的语法规范:

if [$? != 0]; then echo "Hello" else echo "good bye" fi

错误原因拆解:

  1. [ 命令需要空格分隔:[ 是bash的内置命令(和test命令等价),它必须和后面的表达式之间保留空格,同理,表达式和]之间也需要空格。你写的[$?会被bash识别成一个名为[0(假设$?的值是0)的命令,这就导致了“[0:命令未找到”的报错。
  2. 语句分隔符缺失:then后面、else前面、else后面都需要用分号;或者换行来分隔不同的命令块,否则bash会把多个命令当成一个整体解析,逻辑也会混乱。

修正后的脚本代码:

如果喜欢换行排版(可读性更好):

wget -qO - https://blockchain.info/fr/q/addressbalance/$pk
if [ $? != 0 ]; then 
    echo "Hello" 
else 
    echo "good bye" 
fi

如果要保持单行写法(需正确添加分号):

wget -qO - https://blockchain.info/fr/q/addressbalance/$pk
if [ $? != 0 ]; then echo "Hello"; else echo "good bye"; fi

额外优化建议:

bash里更推荐直接把命令放在if条件里判断,这样更简洁直观,不需要单独引用$?:

if ! wget -qO - https://blockchain.info/fr/q/addressbalance/$pk; then
    echo "Hello"
else
    echo "good bye"
fi

这样如果wget执行失败(非0退出码),就会执行echo "Hello",逻辑和你原来的代码一致,但可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:46:48