[英]save output and execution time of command in diffrent variables in bash script
[英]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.