즉시 실행되도록 하는 동안 "at" 명령에 스크립트 경로 대신 문자열 명령을 전달합니다.

즉시 실행되도록 하는 동안 "at" 명령에 스크립트 경로 대신 문자열 명령을 전달합니다.

at명령을 사용하면 나중에 한 번 스크립트를 실행할 수 있습니다.

at now + 1 minutes -f ~/script.sh

또는 문자열 명령을 실행하십시오지금그런 다음 향후 결과를 반환합니다.

echo "xyz" >> ~/testtest.txt | at now + 1 minute

지금(예 1) 대신 미래에 실행되는 문자열 명령(예 2)을 어떻게 전달할 수 있나요? 예를 들어

at now + 1 minutes -SOMEFLAG 'echo "xyz" >> ~/testtest.txt'

감사해요

답변1

나중에 명령줄에서 실행할 스크립트를 전달하려면 여기 문서를 사용하세요.

at now + 1 minute <<'END_AT'
echo 'xyz' >> ~/testtest.txt
END_AT

현재 쉘이 스크립트 텍스트에서 변수 등을 확장하는 것을 방지하기 위해 여기에 있는 문서가 참조됩니다( <<'END_AT'대신 사용하여). <<END_AT문서는 at표준 입력을 통해 전달됩니다.

답변2

명령을 작은따옴표로 묶고 at있는 그대로 전달할 수 있습니다.

echo 'echo "xyz" >> ~/testtest.txt' | at now + 1 minutes

또는 bash 또는 기타 지원되는 스크립트를 사용하는 경우프로세스 교체, 넌 할 수있어:

at now + 1 minutes < <(echo 'echo "xyz" >> ~/testtest.txt')

at이는 기본적으로 명령으로 파일을 전달하는 것과 마찬가지로 파일 이름을 전달합니다 .

그러나 heredoc을 다음과 같이 사용하십시오.쿠사로난다 조언프로세스 교체를 지원하기 위해 셸에 의존하지 않으므로 이식성이 더 높아야 합니다.

관련 정보