Bash脚本条件判断else分支失效问题求助
问题分析与修复
你的脚本存在两个关键错误,导致无论原命令退出状态如何,都会输出"Node will initialize":
$?被后续命令覆盖
执行完sudo pkexec ip link set can0 up type can bitrate 1000000后,你用echo $?打印了退出码,但echo命令本身会生成新的退出码(通常为0),此时result=$?获取的是echo命令的退出码,而非你需要的ip命令的退出状态。变量引用错误
在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
相关产品推荐
相关产品推荐

