Linux "at" 명령에 사용된 변수에서 시간을 빼는 방법은 무엇입니까?

Linux "at" 명령에 사용된 변수에서 시간을 빼는 방법은 무엇입니까?

나는 작업의 시작 시간과 날짜를 선언하기 위해 변수를 사용합니다 at. 이것은 잘 작동했지만 이제 at 작업을 변수에 지정된 시간보다 일찍 실행하려면 time 변수에서 시간을 빼야 한다는 것을 깨달았습니다(변수는 at 작업 내뿐만 아니라 스크립트의 다른 곳에서도 사용됩니다).

#variables
time=2:00pm
date=2018-1-16

#I need to subtract 4 hours from the time variable 
at -f /home/JS/filename $time-4hours $date >attemp 2>&1

뺄셈의 결과로 세 번째 변수를 도입할까도 생각했지만 그것도 불가능했습니다.

답변1

내 데비안 시스템에서:

$ echo true | at 2:00pm 2018-01-18 - 4 hours
warning: commands will be executed using /bin/sh
job 10 at Thu Jan 18 10:00:00 2018

time따라서 적절한 값이 주어지면 date이것이 작동해야 한다고 생각합니다.

$ at -f ... $time $date - 4 hours

토큰의 순서가 약간 까다롭기 때문에 순서대로 해야 할 것 같습니다.시간,날짜,델타. 예를 들어 다음은 작동하지 않습니다.

$ echo true | at 2:00pm - 4 hours 2018-01-18
syntax error. Last token seen: 2018-01-18
Garbled time

관련 정보