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

Bash脚本条件判断else分支失效问题求助

问题分析与修复

你的脚本存在两个关键错误,导致无论原命令退出状态如何,都会输出"Node will initialize":

  1. $?被后续命令覆盖
    执行完sudo pkexec ip link set can0 up type can bitrate 1000000后,你用echo $?打印了退出码,但echo命令本身会生成新的退出码(通常为0),此时result=$?获取的是echo命令的退出码,而非你需要的ip命令的退出状态。

  2. 变量引用错误
    在if [[ result -eq 0 ]]中,你直接写result而未加$符号,Bash会将其视为非空字符串,在[[ ]]的条件判断里,非空字符串会被判定为逻辑真,因此无论实际退出码是什么,该条件始终成立。

修正后的脚本

#!/bin/bash

sudo pkexec ip link set can0 up type can bitrate 1000000
# 先保存退出码,再打印
result=$?
echo $result

if [[ $result -eq 0 ]]
then
  echo "Node will initialize"
else
  echo "Node will not initialize"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:33:33