Причина, по которой вы получаете одинаковый результат для каждого $(shell date +%s)
, заключается в том, что каждый выполняется и заменяется в одно и то же время - то есть, когда make
запускает команду.
После make
выполняет замены, это команда, которую видит оболочка:
@START=1309950228 && \
echo ${START} &&\
sleep 10s && \
END=1309950228 && \
echo "${END} ${START}" &&\
DIFF_SUB=$(($END - $START)) && \
echo IT TOOK ${DIFF_SUB} SECONDS
Если вы хотите, чтобы команда date
выполнялась дважды с разницей во времени 10 секунд между ними, вам потребуется оболочка для выполнения командыподстановка команд, а не make
:
@START=$$(date +%s) && \
echo $${START} &&\
sleep 10s && \
END=$$(date +%s) && \
echo "$${END} $${START}" &&\
DIFF_SUB=$$(($$END - $$START)) && \
echo IT TOOK $${DIFF_SUB} SECONDS
Обратите внимание на двойной $$
и удаление команды shell
make
.