linux - 使用 bash 脚本的生肖计算器
问题描述
#!/usr/bin/bash
echo "This is a zodiac sign calculator"
echo "May i know your name"
read name
echo "May i know your month of birth"
read month
echo "May i know your date of birth"
read date
if ([[ "$month" == "3" ] && [ "$date" -ge "21" ]] && [[ "$month" == "4" ] && [ "$date" -le "20" ]])
then
echo "Hi $name !!! Your Zodiac Sign is Aries!"
elif ([[ "$month" == "4" ] && [ "$date" -ge "21" ]] && [[ "$month" == "5" ] && [ "$date" -le "21" ]])
then
echo "Hi $name !!! Your Zodiac sign is Taurus"
elif ([[ "$month" == "5" ] && [ "$date" -ge "22" ]] && [[ "$month" == "6" ] && [ "$date" -le "22" ]])
then
echo "Hi $name !!! Your Zodiac sign is Gemini"
elif ([[ "$month" == "6" ] && [ "$date" -ge "23" ]] && [[ "$month" == "7" ] && [ "$date" -le "23" ]])
then
echo "Hi $name !!! Your Zodiac is Cancer"
elif ([[ "$month" == "7" ] && [ "$date" -ge "24" ]] && [[ "$month" == "8" ] && [ "$date" -le "23" ]])
then
echo "Hi $name !!! Your Zodiac sign is Leo"
elif ([[ "$month" == "8" ] && [ "$date" -ge "24" ]] && [[ "$month" == "9" ] && [ "$date" -le "23" ]])
then
echo "Hi $name !!! Your Zodiac sign is Virgo"
elif ([[ "$month" == "9" ] && [ "$date" -ge "24" ]] && [[ "$month" == "10" ] && [ "$date" -le "23" ]])
then
echo "Hi $name !!! Your Zodiac sign is Libra"
elif ([[ "$month" == "10" ] && [ "$date" -ge "24" ]] && [[ "$month" == "11" ] && [ "$date" -le "22" ]])
then
echo "Hi $name !!! Your Zodiac sign is Scorpio"
elif ([[ "$month" == "11" ] && [ "$date" -ge "24" ]] && [[ "$month" == "12" ] && [ "$date" -le "21" ]])
then
echo "Hi $name !!! Your Zodiac sign is Saguittarius"
elif ([[ "$month" == "12" ] && [ "$date" -ge "22" ]] && [[ "$month" == "1" ] && [ "$date" -le "20" ]])
then
echo "Hi $name !!! Your Zodiac sign is Capricorn"
elif ([[ "$month" == "1" ] && [ "$date" -ge "21" ]] && [[ "$month" == "2" ] && [ "$date" -le "19" ]])
then
echo "Hi $name !!! Your Zodiac sign is Aquarius"
elif ([[ "$month" == "2" ] && [ "$date" -ge "20" ]] && [[ "$month" == "3" ] && [ "$date" -le "20" ]])
then
echo "Hi $name !!! Your Zodiac sign is Pieces"
else
echo "Incorrect Input!! Try Again!"
fi
伙计们请帮助我,我被困在这里..每次都显示不正确的输入
解决方案
我只收到语法错误。代替 ...
if ([[ "$month" = 1 ] && [ "$date" -le 2 ]]) # this is wrong
... 写 ...
if [[ "$month" = 1 ]] && [[ "$date" -le 2 ]]
...甚至更好...
if (( month == 1 && date <= 2 ))
如果您不确定,请通过https://www.shellcheck.net/运行您的代码。Shellcheck 指出问题并提出修复建议。
顺便说一句:有一个简单的技巧可以减少检查次数。如果您将月份和日期存储在具有格式的单个变量中MDD
并且也elif
明智地使用,那么monthdate < ...
每个星座一个就足够了。以下代码将月份和日期存储在变量中monthday
,同时确保日期前导零:
printf -v monthday '%d%02d' "$month" "$day"
推荐阅读
- javascript - GA 事件未在 JQuery 点击函数中触发
- kubernetes - 将运行状况检查主机标头添加到 Ingress
- javascript - 为 vue.js 分页的不同页面制作单独的 url
- python - 关于“for”循环的一般问题
- visual-studio - 无法从 Visual Studio 2017 连接到 Docker 上的远程调试器
- javascript - 如何解决“在短时间内调用过多次服务:exec qps。”
- javascript - CordovaJS - 错误:清单合并失败:uses-sdk:minSdkVersion 1 不能小于中声明的版本 19
- python - 在 pandas df 中查找每个类别的范围
- angular - retryWhen 仅在第一个错误中按预期工作
- javascript - 仅在单击时执行脚本