Bash脚本条件判断失效:无论输入何值均返回胜利结果
问题分析与修复
你的脚本存在两个关键语法错误,直接导致了“无论输入啥都判定胜利”的异常结果:
变量赋值的空格错误
原代码:beast =$(($RANDOM % 5))
Bash里变量赋值的规则是等号两边不能加空格,否则会被系统解析成执行名为beast的命令,后面的内容当成命令参数,最终beast变量根本没被正确赋值(实际是空值)。正确写法:beast=$(($RANDOM % 5))条件测试的空格错误
原代码: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
相关产品推荐
相关产品推荐

