Linux: How to build a single command with parameters depending on current time range

I want to create a command which appends a specific parameter only when the current time is between midnight and 6am.

Example pseudo-code:

mvn clean verify <#if isBetweenMidnightAnd6AM> -Dfindbugs.skip=false</#if> 

Is it possible to build this in a single command line or do I need a shell script?

0
задан 22 July 2016 в 17:20
1 ответ

Здесь вам почти наверняка будет лучше использовать сценарий оболочки. Вы могли бы сделать это с помощью очень и очень уродливой строки вроде этой: (примечание: не отлажено / не протестировано)

mvn clean verify $( if [ ($(date +%H) -ge 0) && ($(date +%H) -le 6) ];then echo  "-Dfindbugs.skip=false";fi;)

В любом случае сценарий будет намного проще просматривать. Это будет выглядеть примерно так:

if [ ($(date +%H) -ge 0) && ($(date +%H) -le 6) ]
then
  mvn clean verify -Dfindbugs.skip=false
else
  mvn clean verify $Your_other_opts
fi

Кроме того, со скриптом вы сможете улучшить отладку и проверку, чтобы убедиться, что он работает правильно.

Тем не менее, похоже, что это не то, что нельзя запускать вручную, поэтому вы можете пойти очень просто и выполнить задание cron, например:

0 0-6 * * * mvn clean verify -Dfindbugs.skip=false

Который запустит команду в начале часов 0 (полночь) - 6 (6 утра).

2
ответ дан 4 December 2019 в 13:39

Теги

Похожие вопросы