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

Bash脚本条件判断失效:无论输入何值均返回胜利结果

问题分析与修复

你的脚本存在两个关键语法错误,直接导致了“无论输入啥都判定胜利”的异常结果:

  1. 变量赋值的空格错误
    原代码:beast =$(($RANDOM % 5))
    Bash里变量赋值的规则是等号两边不能加空格,否则会被系统解析成执行名为beast的命令,后面的内容当成命令参数,最终beast变量根本没被正确赋值(实际是空值)。正确写法:

    beast=$(($RANDOM % 5))
    
  2. 条件测试的空格错误
    原代码:if [[$beast == $tarnished]]; then
    使用[[ ]]做条件测试时,[[后面和]]前面必须加空格,否则整个表达式会被当成一个非空字符串。而Bash里只要字符串非空,条件就会判定为真,所以不管输入什么,都会执行胜利分支。正确写法:

    if [[ $beast == $tarnished ]]; then
    

修复后的完整脚本:

# First Beast battle: If you select the same number as the beast, you win, else, you lose.

beast=$(($RANDOM % 5))
#RANDOM % 5 PICKS A NUMBER BTW 0 AND 4.. 

echo "Your first beast approaches, Prepare to battle.Pick a number between 0 & 4. (0..4)"

read tarnished
if [[ $beast == $tarnished ]]; then
        echo "Beast VANQUISHED!!! Congrats fellow tarnished. You won!"
else
        echo "You died modafucker!"
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:46:47