Назад | Перейти на главную страницу

Linux: Как создать единую команду с параметрами в зависимости от текущего диапазона времени

Я хочу создать команду, которая добавляет определенный параметр только когда текущее время между полуночью и 6 утра.

Пример псевдокода:

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

Можно ли создать это в одной командной строке или мне нужен сценарий оболочки?

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

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 утра).