Shell脚本条件比较失效,执行报错“[0:命令未找到”求助
解决bash脚本中条件判断报错“[0:命令未找到”的问题
看了你的脚本和报错信息,问题出在bash条件判断的语法格式上,具体来说是条件判断行的写法不符合bash的语法规范:
if [$? != 0]; then echo "Hello" else echo "good bye" fi
错误原因拆解:
[命令需要空格分隔:[是bash的内置命令(和test命令等价),它必须和后面的表达式之间保留空格,同理,表达式和]之间也需要空格。你写的[$?会被bash识别成一个名为[0(假设$?的值是0)的命令,这就导致了“[0:命令未找到”的报错。- 语句分隔符缺失:
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
相关产品推荐
相关产品推荐

