首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用测试和数据比较当前的小时ro范围

使用测试和数据比较当前的小时ro范围
EN

Unix & Linux用户
提问于 2020-12-17 09:32:09
回答 2查看 820关注 0票数 1

我是Gnu/Linux和bash的新手,我试图编写一个简单的bash脚本,以测试date +%H是否在预定义的小时范围内,但没有成功。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hour='date +%H'
if [[ $hour -ge 12 ]] || [[ $hour -lt 19 ]]
then echo "Good afternoon!"

试图将一行与此隔离,会产生“所期望的整数表达式”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test $hour -ge 12

我觉得我缺少了一些简单的东西,要么将$hour返回作为整数,要么将其作为字符串处理。

编辑:这是完整的脚本,在基本级别上有什么必要的改进吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
!#/bin/bash
name=$(whoami)
hour=$(date +%H)
if [ $hour -lt 5 ] || [ $hour -ge 19 ]
then xmessage -center "Good evening $name!"
elif [ $hour -ge 5 ] && [ $hour -lt 12 ]
then xmessage -center "Good morning $name!"
else xmessage -center "Good afternoon $name!"
fi
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-12-17 09:36:12

将文本字符串date +%H分配给变量hour

要运行该date命令并将其输出分配给hour,请使用命令替换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hour=$(date +%H)

或者,最近发布了bash外壳(4.2+),

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf -v hour '%(%H)T' -1

在不使用date的情况下也会这样做。

此外,您还需要fi与该if一起使用&& (“和”)代替|| (“或”)以使逻辑正确:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if [ "$hour" -ge 12 ] && [ "$hour" -lt 19 ]; then
    echo 'Good afternoon'
fi

这里我使用的是标准的[ ... ]测试,而不是bash shell自己的[[ ... ]]测试,以避免将$hour的值解释为无效的八进制数字(0809) (在-ge-lt测试引入的算术上下文中)。

如果您觉得需要使用[[ ... ]],您可以测试${hour#0}而不是未经修改的$hour值,以避免出现问题。${hour#0}的值将与$hour相同,但任何单个前导0都将被删除。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if [[ ${hour#0} -ge 12 && ${hour#0} -lt 19 ]]; then
    echo 'Good afternoon'
fi
票数 4
EN

Unix & Linux用户

发布于 2020-12-17 10:54:04

Bash还支持算术操作的((...))语法。您的代码可以重写为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

declare -i hour=$(date +%k)
if (( hour > 12 && hour < 19 ))
then
    printf "Good afternoon\n"
fi

declare -i hour=$(date +%k)指定变量hour将被视为算术整数,并将当前小时(0-23)分配给它,没有前导零。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/624977

复制
相关文章
CoordinatorLayout
CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能:  1、作为顶层布局  2、调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。CoordinatorLayout通过设置子View的 Behaviors来调度子View。系统(Support V7)提供了AppBarLayout.Behavior, AppBarLayout.ScrollingViewBehavior, F
xiangzhihong
2018/02/01
1.4K0
CoordinatorLayout
Android--CoordinatorLayout基本使用
CoordinatorLayout是在desgin包下的一个用于协调子控件的组件,可以解决绝大部分滑动联动问题,使用方法也很简单,为观察者注册一个Behavior,在Behavior指定要监听的控件(
aruba
2020/07/03
1K0
Android--CoordinatorLayout基本使用
滑动吸顶效果
需求是先滑动里面的列表,滑动到一个位置时外面滑动,外面滑动一段距离后再里面滑动。最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。
三流之路
2019/05/21
2.7K0
NestedScrollView 嵌套 ListView 实现滑动折叠效果
引言 最近,在做公司一个design折叠效果的时候遇到个问题,就是我们本身app的方法数太多了,dex分包技术还没搞定。不得不尽量缩减一些不必要的包、类。当我们引入RecyclerView的时候,恰好
用户1127566
2018/06/06
3.5K0
CoordinatorLayout与滚动的处理
本博文专门讲解和CoordinatorLayout相关的知识点,这也是Design Support Library中最重要与最难的部分。
小小工匠
2021/08/16
8190
NestedScrolling机制之CoordinatorLayout.Behavior实战
在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,
HelloJack
2018/10/11
9070
NestedScrolling机制之CoordinatorLayout.Behavior实战
Floating Action Button-Android M新控件
浮动操作按钮 (简称 FAB) 是: “一个特殊的promoted操作案例。因为一个浮动在UI之上的圆形图标而显得格外突出,同时它还具有特殊的手势行为”
小小工匠
2021/08/16
1.5K0
自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历
使用 CoordinateLayout 可以协调它的子布局,实现滑动效果的联动,它的滑动效果由 Behavior 实现。以前用过小米日历,对它滑动平滑切换日月视图的效果印象深刻。本文尝试用自定义 Behavior 实现一个带有这种效果的日历。
CCCruch
2019/07/23
3.4K0
自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历
淘宝首页Bug!嵌套滑动及NestedScroll
学习嵌套滑动的相关文章: 自定义View事件之进阶篇(一)-NestedScrolling(嵌套滑动)机制. Android NestedScrolling机制完全解析 带你玩转嵌套滑动
胡飞洋
2020/07/23
1.5K0
淘宝首页Bug!嵌套滑动及NestedScroll
用 CoordinatorLayout 处理滚动
原文地址:Handling Scrolls with CoordinatorLayout 原文作者:CODEPATH 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Feximin 总览 CoordinatorLayout 扩展了完成 Google's Material Design 中的多种滚动效果的能力。目前,此框架提供了几种不需要写任何自定义动画代码就可以(使动画)工作的方式。这些效果包括: 上下滑动 Floating Action Button 以给 Sn
Android 开发者
2018/05/31
4.9K0
Android之MaterialDesign应用技术
  PS:纵观现在大大小小软件的界面都变的比较漂亮,还有一些系统了,比如小米的MIUI,华为的EMUI等,虽然底层都是安卓,但他们的界面多多少少都会不同,谷歌对这个UI也是非常重视的,MaterialDesign就是今天的主角,首先在看这个的同时,要搞清楚什么是Material Design,百度百科解释,中文名:材料设计语言,是由Google推出的全新的设计语言,谷歌表示,这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。design,中文是设计之意,即“设想和计划
cMusketeer
2018/03/28
1.3K0
Android之MaterialDesign应用技术
MaterialDesign之FloatingActionButton
就是上面这样了,忘说了一件很重要的事情……FloatingActionButton的监听就是最原始的监听!!!接下来到了重头戏了
蜻蜓队长
2018/08/03
7120
MaterialDesign之FloatingActionButton
自定义 Behavior - 仿新浪微博发现页的实现
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/71732642
程序员徐公
2018/09/17
8820
自定义 Behavior - 仿新浪微博发现页的实现
ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
文章首发地址CSDN:http://blog.csdn.net/gdutxiaoxu/article/details/52939127
全栈程序员站长
2022/09/15
6930
ViewPager,ScrollView 嵌套ViewPager滑动冲突解决
Android studio 最近版安卓pom依赖2020
gridlayout 网格布局 implementation'androidx.gridlayout:gridlayout:1.0.0' drawerlayout 抽屉布局 implementation'androidx.drawerlayout:drawerlayout:1.0.0' NavigationView 侧滑 implementation 'com.google.android.material.navigation.NavigationView:1.0.0' constraintlayout
CaesarChang张旭
2021/01/26
1.4K0
点击加载更多

相似问题

RecyclerView内部的水平RecyclerView CoordinatorLayout内部

32

CoordinatorLayout中的水平RecyclerView

21

带有NestedScrollView和水平滚动RecyclerView的CoordinatorLayout

221

带有NestedScrollView的NestedScrolling,RecyclerView (水平),在CoordinatorLayout内

516

使用RecyclerView的CoordinatorLayout

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文