微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – bash脚本,case语句没有返回输出

我写了这段代码来回应一个问候语,这取决于它是什么时候,但是当我运行它时它没有显示任何错误,但也没有回应任何命令行.为了尝试进行故障排除,我注释掉了所有内容并只回显了时间变量,这很好.那么,我做错了什么?!

#!/bin/bash


time=$(date +%H)

case $time in
#check if its morning
    [0-11] ) echo "greeting 1";;

#check if its afternoon
    [12-17] ) echo "greeting 2";;

#check if its evening
    [18-23] ) echo "greeting 3"
esac

解决方法:

[…]引入了一个字符类,而不是整数区间.因此,[18-23]与[138-2]相同,与[13]相同,因为8和2之间没有任何内容.

您可以使用以下内容作为修复:

case $time in
#check if its morning
    0?|1[01] ) echo "greeting 1";;

#check if its afternoon
    1[2-7] ) echo "greeting 2";;

#check if its evening
    1[89]|2? ) echo "greeting 3"
esac

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐