아라리요
1k
2021-11-25 15:06:20
3
100

셸 스크립트 if 질문있습니다.


if [ -d /home/app/tomcat/logs ]; then
    echo 'logs folder exists'

    if [ -d /home/app/www/backup_test/$HOSTNAME/ ]; then:
    else
        mkdir /home/app/www/backup_test/$HOSTNAME
    fi

    find /home/app/tomcat/logs -type f -mtime +7 -exec cp {} /home/app/www/backup_test/$HOSTNAME/ \;

else
    echo 'logs folder not exists'
fi

저는 $HOSTNAME의 폴더를 확인해서 폴더가 있으면 그냥 넘어가고 폴더가 없으면 해당 폴더 만들어주려고 합니다.

두번째 if 문에 그 동작을 생각해서 만들어줬는데요.

해당 스크립트 실행하면 

syntax error near unexpected token `else'

이런 에러가 뜨더라고요. then 다음에 아무것도 없어서 그런건지...
다른 언어였으면 if에 ! 라도 붙여서 true false 반대로 처리라도 해볼텐데
제가 셸스크립트는 처음 다뤄보다보니 어떻게 해야되는지 모르겠네요.


해결방법 좀 알려주셨으면 합니다. 

감사합니다.

0
  • 답변 3

  • kimdongy1000
    400
    2021-11-25 15:09:34

    두번째 if 에 then: then 에 콜론이 붙어 있습니다 이거 때문에 다음의 else 에 


    오류가 나는거 같습니다 

  • Eleutherius
    2k
    2021-11-25 15:09:48


    if [ ! -d /home/app/www/backup_test/$HOSTNAME/ ] ; then
        mkdir /home/app/www/backup_test/$HOSTNAME
    fi
    


    then 뒤에 콜론(:)은 왜 있는건가요?

  • 아라리요
    1k
    2021-11-25 15:13:12

    kimdongy1000님 // 저거 없어도 똑같이 나고 있더라고요;;

    Eleutherius님 // 반전이 먹히는군요. 안그래도 혹시나해서 해보고 오니까 답글 달아주셨네요. 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.