いくつかの時間条件を含むBashコード

いくつかの時間条件を含むBashコード

Bashコードは、特定の時間条件でバイナリまたは他のコマンドをどのように実行できますか?擬似コード

if time is between 6:00 - 9:00 run foo.sh

else if time is between 9:00 - 12:00 run bar.sh

else run foobar.sh

助けてください

ベストアンサー1

このように:

#!/usr/bin/env bash

hour=$(date +%k)
if ((hour >= 6 && hour < 9)); then
    ./foo.sh
elif ((hour >= 9 && hour <= 12)); then
    ./bar.sh
else
    ./foobar.sh
fi

((...))$((...))式が0でない場合は終了ステータス0を返し、式が0の場合は1を返す算術命令です。副作用(割り当て)が必要な場合は、「let」の同義語としても使用されます。

バラよりhttp://mywiki.wooledge.org/ArithmeticExpression


嫌悪感POSIX:

#!/usr/bin/env sh

hour=$(date +%H)

if [ "$hour" -ge 6 ] && [ "$hour" -lt 9 ]; then
    ./foo.sh
elif [ "$hour" -ge 9 ] && [ "$hour" -lt 12 ]; then
    ./bar.sh
else
    ./foobar.sh
fi

または

case "$hour" in
    ( 0[6-8]      ) echo '6:00 TO 8:59'  ;;
    ( 09 | 1[0-1] ) echo '9:00 TO 11:59' ;;
    ( *           ) echo 'rest'          ;;
esac

おすすめ記事