要求用户输入年龄等信息并将其保存到变量中

要求用户输入年龄等信息并将其保存到变量中

我试图让一个简单的 bash 脚本作为一个初学者练习,我要求用户输入他们的年龄,并且脚本应该根据他们的输入回显“你老了”或“你很年轻”,如果他们输入的数字大于或等于 30,提示应该回显“你老了”,如果他们输入的数字小于 30,它应该回显“你很年轻”,如下所示

#!bin/bash
myage=30
echo "Please enter your age"
read age
if [ $myage -ge 30 ];
then
echo "You are old"
else
echo "You are young"
fi

但问题是脚本重复了同一句话“无论我输入的数字小于 30 还是大于 30,你都老了,因为 else 语句被忽略了。

有什么问题?

答案1

“用户输入”不可信任!如果用户输入“ I like cats”或“ 4t5”会怎么样?您必须检查两个条件:答案是否为数字;数字是否“旧”。请执行以下操作:

#!/bin/bash
# change this next birthday
myage=30
#
numok=0
while [[ 0 -eq $numok ]] ; do
    read -p "Enter your age: " age
    if [[ "$age" =~ ^[0-9]+$ ]] ; then
        numok=1
    else
        printf "Try again."
    fi
done
#
if [[ $age -ge $myage ]] ; then
    printf "You are old."
else
    printf "You are young."
fi

注意:这未经测试;但通过以下方式检查https://www.shellcheck.net/语法。

答案2

该脚本将满足您的目的:

#!/usr/bin/bash
myage=30
echo "Please enter your age"
read myage
if [ $myage -ge 30 ];
then
echo "You are old"
else
echo "You are young"
fi

相关内容