at을 사용하여 실행될 때 bash 스크립트에 명령줄 인수를 전달하는 방법은 무엇입니까?

at을 사용하여 실행될 때 bash 스크립트에 명령줄 인수를 전달하는 방법은 무엇입니까?

특정 시간에 실행해야 하는 bash 스크립트가 있는데 이 스크립트가 at내가 해야 할 일을 거의 수행한다는 것을 알았습니다. 그러나 문제는 .bashrc를 통해 bash 스크립트에 명령줄 인수를 전달하는 방법을 잘 모르겠다는 것입니다 at. 아래 명령은 다른 솔루션을 살펴본 후 얻은 결과입니다.

echo "-f job.sh argument" | xargs at now + 2 minutes

그러나 이것은 작동하지 않습니다. 누구든지 도와줄 수 있나요?

답변1

xargs(및 )을 삭제합니다 -f. at사용하지 않으면 표준 입력에서 명령을 읽습니다 -f.

~에서POSIX 사양at:

유틸리티 at는 표준 입력에서 명령을 읽고 나중에 실행하기 위해 진행 중인 작업으로 이를 함께 조합해야 합니다.

귀하의 경우:

echo 'job.sh argument' | at now + 2 minutes

이 작업은 job.sh argument2분 이내에 수행됩니다.

또는,

at now + 2 minutes <<'AT_JOB'
job.sh argument
AT_JOB

at실제로 매개변수를 작업에 전달할 수 없으므로( at -f job.sh argument ...작동하지 않음) 위의 두 가지 변형 모두에서 매개변수를 작업의 일부로 만들어야 합니다.

답변2

at now + 2 minutes
/your/script -flags parameters
^D

내가 쓴 곳을 ^D사용해야합니다Ctrl D

또는 프로그래밍 방식으로

echo '/your/script -flags parameters' |  at now + 2 minutes

date
Fri 24 Jan 12:45:18 GMT 2020

echo 'date >test.txt' | at now + 2 minutes
warning: commands will be executed using /bin/sh
job 1173 at Fri Jan 24 12:47:00 2020

관련 정보