簡體   English   中英

bash腳本執行日期/時間

[英]bash script execution date/time

我現在試圖打開和關閉一段時間。 我在Linux環境中有一個bash腳本,出於安全原因,我希望防止在上午9點到下午5點之間執行,除非給出一個標志。 因此,如果我在上午9點到下午5點之間執行./script.sh,它會說“NO GO”,但如果我這樣做./script.sh -force它會繞過檢查。 基本上確保這個人不會偶然做某事。 我已經嘗試了一些日期命令,但無法將這個東西包裹在我的腦海里。 任何人都可以幫忙嗎?

寫一個函數。 使用date +"%k"獲取當前小時,使用(( ))進行比較。

基本答案:

case "$1" in
(-force)
    : OK;;
(*)
    case $(date +'%H') in
    (09|1[0-6]) 
        echo "Cannot run between 09:00 and 17:00" 1>&2
        exit 1;;
    esac;;
esac

請注意,我通過運行以下方法測試了這個(一個名為'so.sh'的腳本):

TZ=US/Pacific sh so.sh
TZ=US/Central sh so.sh

它在太平洋時間(08:50)工作,而不是在中部時間(10:50)工作。 關於這一點的要點是強調控件只與環境變量一樣好。 用戶可以使用環境變量。

這有效

#!/bin/bash

# Ensure environmental variable runprogram=yes isn't set before 
unset runprogram 

# logic works out to don't run if between 9 and 5pm as you requested
[ $(date "+%k")  -le 9 -a  $(date +"%k")  -ge 17 ] && runprogram=yes  

# Adding - avoids the need to test if the length of $1 is zero
[ "${$1}-" = "-forced-" ] && runprogram=yes 

if [ "${runprogram}-" = "yes-" ]; then 
    run_program 
else 
    echo "No Go" 1>&2 #redirects message to standard error
fi

測試腳本:

#!/bin/bash

HOUR=$(date +%k)
echo "Now hour is $HOUR"

if [[ $HOUR -gt 9 ]] ; then
  echo 'after 9'
fi


if [[ $HOUR -lt 23 ]]; then
  echo 'before 11 pm'
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM