Вот один способ, в основном в awk:
#!/bin/sh
[ "$end" -ge "$start" ] || exit 1
awk -v start=$1 -v end=$2 '
BEGIN {
srand();
for(i=1; i <= 6; i++)
printf "%02d/%02d/%d\n", 1 + rand() * 28, 1 + rand() * 12, start + rand() * (end-start);
}
' < /dev/null
Сценарий оболочки принимает два параметра и передает их как переменные в awk, который не читает ввод и выполняет всю работу в блоке BEGIN
.
После заполнения генератор случайных чисел выполняет 6 циклов по оператору printf
. Этот оператор печати выбирает подмножество возможных дат в диапазоне, генерируя случайное число от 1 до 28 для дня (, безопасного для февраля ), от 1 до 12 для месяца,и между заданными начальным и конечным годами. Это случайное, но не полное покрытие --, оно никогда не напечатает дни 29 -31 для месяцев, в которых они есть.
Другой способ: использование даты GNU и функций bash:
#!/bin/bash
start=$1
end=$2
[[ "$start" -le "$end" ]] || exit 1
startsec=$(date -d "1/1/$start" +%s)
for((i=1; i<=6; i++))
do
r=$((RANDOM % (1 + end - start)*365*24*60*60))
date -d @$((startsec + r)) +%d/%m/%Y
done
Он работает, вычисляя секунды -с -эпохи -1 января в дату начала, затем для каждого из циклов он добавляет случайное количество секунд смещения; случайное число ограничено количеством секунд, охватывающих заданный диапазон. Дата GNU затем манипулирует этой датой в желаемом формате.
Вы можете использовать поддержку ядра Linux для разных двоичных форматов (binfmt _misc ). Это позволяет вам зарегистрировать интерпретатор (, например. Java )для выполнения файла на основе первых нескольких байтов в файле (, например. jar-файл ). Видетьhttps://www.kernel.org/doc/Documentation/admin-guide/binfmt-misc.rstдля получения дополнительной информации.
Ваша ошибка связана с попыткой системы проанализировать файл jar -в поисках директивы интерпретатора-#!/interpreter
.
Один из способов — просто создать сценарий оболочки -с именем rating-gateway-0.0.1-SNAPSHOT.jar
и запустить из него приложение Java.
Таким образом, вы получите 2 файла:
/opt/rating-gateway/rating-gateway-0.0.1-SNAPSHOT.realjar.jar
-ваша настоящая банка -файл /opt/rating-gateway/rating-gateway-0.0.1-SNAPSHOT.jar
-простая оболочка -скрипт следующего содержания:#!/usr/bin/env sh
java -jar /opt/rating-gateway/rating-gateway-0.0.1-SNAPSHOT.jar