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

Bash脚本年龄判断逻辑异常求助

Bash脚本年龄判断逻辑异常求助

嘿,我来帮你揪出这个脚本里的问题~你遇到的情况其实是两个小错误导致的,咱们一个个说清楚:

1. Shebang 路径写错了

你脚本第一行写的是 #!bin/bash,这里少了最前面的斜杠 /,正确的写法应该是:

#!/bin/bash

少了这个斜杠的话,系统没办法正确定位到bash解释器的位置,虽然这次的核心问题不是它,但还是得修正才能保证脚本正常执行。

2. 核心判断逻辑搞反了

这才是导致不管输入啥都输出“You are old”的关键!你看你的if条件:

if [ $myage -ge 30 ];

这里你是在判断自己定义的myage(值是30)是否大于等于30,这肯定永远是true啊!不管用户输入的age是多少,这个条件都成立,所以永远只会执行then分支,完全没机会走到else里。

正确的逻辑应该是拿用户输入的age和30做比较,比如改成:

if [ $age -ge 30 ];

或者用你定义的myage变量(这样以后要修改年龄阈值会更方便):

if [ $age -ge $myage ];

修正后的完整脚本

#!/bin/bash

myage=30

echo "Please enter your age"
read age

if [ $age -ge $myage ];
then
    echo "You are old"
else
    echo "You are young"
fi

额外小建议

为了让脚本更健壮,你可以加个输入验证,防止用户输入非数字的内容,比如:

#!/bin/bash

myage=30

echo "Please enter your age"
read age

# 先判断输入是不是有效数字
if ! [[ $age =~ ^[0-9]+$ ]]; then
    echo "请输入有效的数字哦!"
    exit 1
fi

if [ $age -ge $myage ];
then
    echo "You are old"
else
    echo "You are young"
fi

这样用户输入字母或者乱七八糟的内容时,脚本会友好提示错误,而不是直接抛出奇怪的报错啦~

备注:内容来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:20:31