nohup 쉘 루프를 설정하려고 할 때 구문 오류가 발생했습니다.

nohup 쉘 루프를 설정하려고 할 때 구문 오류가 발생했습니다.

아래의 "do"에 어떤 문제가 있나요?

nohup while true; do ./mysync.sh; sleep 1800; done &

다음 구문 오류가 계속 나타납니다.

sh: 구문 오류: 'do' 예기치 않음

없이 명령을 실행하면북면, 잘 작동하고 오류가 발생하지 않습니다.

답변1

질문:shell은 "nohup while true", "do ./mysync.sh", "sleep 1800" 및 "done &"와 같은 개별 명령을 확인합니다.
여기서 쉘은 예상치 못한 "do"와 관련된 문제를 발견했습니다.

해결책: 작은 쉘 스크립트를 인용하거나 작성하여 명령을 하나의 단위로 그룹화해야 합니다. 그냥 nohup에게 유닛을 넘겨주세요.

(옵션 A)다음과 같이 명령을 추가합니다.
nohup bash -c "while true; do ./mysync.sh; sleep 1800; done &"
(옵션 B)명령을 입력 while true; do ./mysync.sh; sleep 1800; done &하고 mywrapper.sh실행하십시오.
nohup mywrapper.sh

답변2

나는 같은 문제가 있었고 @Prem의 솔루션을 시도했습니다. 권한 거부 오류가 발생합니다. 또한 파일의 변수를 사용하여 while 루프를 통해 nohup을 실행하려는 경우 큰따옴표가 작동하지 않습니다. 파일이 아닌 쉘 환경에서 변수를 찾습니다. 나중에 오류 없이 작은따옴표를 사용하여 동일한 명령을 실행했습니다.

nohup bash -c '동시에 fvar 읽기; bash uniqReads.MT.sh $fvar 완료 < file.txt > file.log &'

관련 정보