쉘 백업 스크립트, `]` 누락

쉘 백업 스크립트, `]` 누락

저는 폴더의 내용을 압축한 다음 해당 파일을 백업 서버로 이동하는 간단한 백업 스크립트를 작성하고 있습니다. 스크립트는 이동하기 전에 tar 파일이 존재하고 0바이트가 아닌지 확인합니다.

문제는 스크립트가 IF 라인 중 하나에서 종료된다는 것입니다.

if [ -f /www/archives/pdf/pdf_201207021048.tar && 11294720 -gt 0 ]; then
    echo "tar file exists and is greater than 0 bytes."
else
    echo "tar file does not exist or is zero bytes"
fi

콘솔의 오류는 다음과 같습니다.

./backup_pdf.sh: line 49: [: missing `]'

49행은 위의 if 문입니다.

스크립트가 성공적으로 확인되었습니다.

sh -n backup.sh

sh"]"가 누락되었지만 구문 검사를 통과했습니다. 무슨 일이 일어나고 있나요?

답변1

문제는 &&유효한 연산자가 아니라는 것 입니다 [. -a또는 로 변경 해야 합니다 [ condition ] && [ other_condition ].

&&분할기(예 ;: , ||, &\n) posix 쉘. 문 [ -f www/archives/pdf/pdf_201207021048.tar은 하나가 있기 때문에 끝나고 &&그와 비슷한 또 다른 문(도달하면 오류가 발생함)이 있고 11294720 -gt 0 ]문은 으로 종료됩니다 ;.

관련 정보