Не удалось выяснить ошибку при печати пользовательской метки времени в сценарии оболочки с использованием даты? - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь манипулировать метками времени, используя дату в сценарии оболочки. Мой код такой

echo $(date -d '+10 mins' +%s%N)

Это напечатает время 10 минут от текущего времени в наносекундах

1554242194228787268

Когда я перемещаю оператор echo внутри цикла for, чтобы выполнить пользовательское действие на основе переменной цикла.

for repi in `seq 1 2`;
do
    lp_incr=$((repi*10))
    n_incr='+'$lp_incr' mins'
    echo $(date -d $n_incr +%s%N)
done

Получение такой ошибки

дата: дополнительный операнд '+% s% N'

Удалить этот дополнительный операнд не поможет мне просмотреть только дату

for repi in `seq 1 2`;
do
    lp_incr=$((repi*10))
    n_incr='+'$lp_incr' mins'
    echo $n_incr
    echo $(date -d $n_incr)
done

Снова получаю другую ошибку

+ 10 минут date: в аргументе 'mins' отсутствует ведущий '+';

$ n_incr содержит '+', но выдает ошибку.

Кажется, я что-то упускаю в этом. Весь мотив в том, чтобы генерировать временную метку в нано секундах для некоторого интервала. Заранее благодарим за все предложения или альтернативные подходы.

1 Ответ

1 голос
/ 03 апреля 2019

In

echo $(date -d $n_incr +%s%N)

$n_incr - это расширен до

echo $(date -d +10 mins +%s%N)

Обратите внимание, что +10 mins это не один аргумент, а два.

Исправление заключается в цитировании аргумента:

echo $(date -d "$n_incr" +%s%N)

Вы также можете опустить $n_incr:

echo $(date -d "+$lp_incr mins" +%s%N)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...