在debian时间依赖下的sh脚本

时间:2013-12-14 23:04:31

标签: bash date time

我使用curl“url”动作(灯光控制)构建非常简单的sh脚本,例如当我开始播放电影时,灯光正在关闭,当电影暂停开启时。我想请你帮忙如何构建这个脚本...... 我想要检查时间是多少,如果是白天的灯光时间,例如直到下午4点,灯会保持关闭状态,但是在下午4点之后灯会响应。

我做了很少的研究并找到时间检查命令:HOUR = $(date +“%k”)

所以,如果我正在考虑什么是impossibl :)我需要类似的东西:

#!/bin/sh

HOUR=$(date +"%k")

if (( HOUR >= 7am && HOUR <= 4pm ))  
curl "URL 1 lights control not included"

else 

curl "URL 2 lights control incuded"

fi

提前谢谢你,对不起我的英语。

2 个答案:

答案 0 :(得分:0)

分开灯光动作和电影动作。

暂停电影时,请检查当前小时是否大于或等于enable_lights_at。如果是,请打开灯并暂停电影。播放电影时 - 首先关闭灯。

#!/bin/bash

#
enable_lights_at=16

lights_turn_off() {
    echo "Turning lights OFF";
    curl "URL LIGHTS OFF"
}

lights_turn_on() {
    echo "Turning lights ON";
    curl "URL LIGHTS ON"
}

movie_play() {
    echo "Playing movie";
    lights_turn_off;
    curl "URL PLAY MOVIE"
}

movie_pause() {
    echo "Pausing movie";
    current_hour=$(date "+%k")
    if [ "$current_hour" -ge "$enable_lights_at" ];
    then
        lights_turn_on;
    fi
    curl "URL PAUSE MOVIE"
}

case "$1" in
    'play')
        movie_play;
    ;;
    'pause')
        movie_pause;
  ;;
  *)
    echo "Usage: $0 {play|pause}"
  ;;
esac

值得检查: http://tldp.org/LDP/abs/html/comparison-ops.html

答案 1 :(得分:0)

好老case来救援。

#!/bin/sh

case $(date +"%H") in
    0[7-9] | 1[0-5] ) url="URL 1 lights control not included" ;;
    * ) url="URL 2 lights control incuded" ;;
esac
curl "$url"

表达式匹配07:00:00到15:59:59;如果你打算在16:59:59之前匹配,那么改变应该是显而易见的。