아래의 "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 &'