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

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

폴더의 내용을 tar로 작성한 다음 해당 파일을 백업 서버로 이동하는 간단한 백업 스크립트를 작성하겠습니다. 스크립트는 이동하기 전에 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 ]해당 명령문은 로 종료됩니다 ;.

관련 정보