at을 사용하여 이 명령을 실행할 때 bash 쉘 스크립트에 매개변수를 어떻게 전달합니까?

at을 사용하여 이 명령을 실행할 때 bash 쉘 스크립트에 매개변수를 어떻게 전달합니까?

매개변수를 받아들이고 이를 스크립트에서 사용하는 쉘 스크립트가 있습니다. 그래서 내가 입력한 스크립트를 실행하려면 /path/to/script argument

at문제는 유틸리티로 실행 되도록 파일을 설정하려고 할 때 발생합니다 . 나는 열심히 노력했다

at -f /path/to/script argument 17:45

at -f '/path/to/script argument' 17:45

그러나 이러한 옵션 중 어느 것도 작동하지 않습니다. 첫 번째는 구문 오류가 발생하고 두 번째는 해당 파일이 없다고 말합니다.

답변1

at기본값은 표준 입력에서 읽는 것이므로 다음과 같이 할 수 있습니다 .

echo /path/to/script argument | at 17:45

답변2

일반적으로 @warl0ck의 조언을 따르는 것이 좋습니다. 다음과 같은 새 스크립트를 만듭니다 /path/to/newscript.

 #!/bin/bash
 /path/to/script argument

그런 다음 다음을 사용하여 실행하십시오 at.

 at -f /path/to/newscript 17:45

이를 통해 필요한 매개변수를 쉽게 조정하고 여러 명령을 실행할 수 있습니다.

또는 가끔 또는 일회성 사용을 위해 at선택한 시간에만 실행한 다음 표준 입력에 필요한 명령을 입력할 수 있습니다 ctrl-D.

 myhost# at 17:45
 /path/to/script argument
 <ctrl-D>
 Job 1 will be executed using /bin/sh

답변3

저도 이 문제를 겪었고 EOF로 해결했습니다.

원격 서버(sshserverhost)의 매개변수 실행에 대한 연결을 시작하는 것입니다 ssh.sshserverhosttest.sh$HOSTNAME

at now + 1 minutes <<EOF
ssh -t sshserverhost 'bash -s' <~/test.sh $HOSTNAME
EOF 

관련 정보