회사에 유닉스/리눅스 계열 서버가 거의 없는데 유일하게 FreeBSD를 쓰는 서버가 있다..

입사하고 좀 처럼 유닉스나 리눅스 쪽을 만질 일이 없었는데 스크립트 한 번짜보라는 말에 Hyper-V에 FreeBSD 설치하고

가물가물한 기억을 더듬고 구글링을 하며 간단하게 파일존재 유무 판단하는 스크립트를 만들었다..

이쁘게 만들고 싶었는데 .. 문법이 제대로 맞는지도 모르겠고... 일단 작동하니까 됬다 싶다..

 

-------------------------------------------------------------------------------

#!/bin/sh


var_array="
123.123.123.121
123.123.123.122
123.123.123.123
123.123.123.124
123.123.123.125
123.123.123.126"


date1=$(date -v-1d "+%Y%m%d")
date2=$(date "+%Y%m%d")

for var in $var_array ; do
        if ( test -e "logfile/test_"$var"_$date1.log" )
                then
                        echo "test_"$var"_$date1.log exist" >> ./log/chkfiles
                else
                        echo "test_"$var"_$date1.log not exist" >> ./log/chkfiles
        fi
done
-------------------------------------------------------------------------------

우선 익숙한 bash가 기본으로 설치가 안되서 .. sh 기준으로 짜봤다..

음.. 솔직히 다 쉬운 구문들로 해놓은 거라 어려울건 없어보여서 따로 설명은 안해야지..

다만 내 검색실력이 부족한거겠지만 sh 기준으로 배열 선언하는 부분 찾는데 꽤나 애를 먹었다..

대부분의 블로그나 커뮤니티에 올라와있는 글들은 bash를 기준으로 작성을 해서

var_array="value..." 형식이 아니라 var_array=(value...)이런 형식으로만 써있었다..

bash 기준으로 sh에서 작성하니 Syntax error: newline unexpected (expecting ")") 이런 에러만 계속 나오더라..

그러다 우연히 찾은 블로그에서 sh 기준으로 써있는걸 발견! 괄호를 단지 따옴표로 바꿨을 뿐인데 배열이 정상적으로 선언되더라..

확실히 대세는 bash긴 한데 sh에 대한 정보가 생각보다 많이 없는거 같다는 생각이 든다..

게다가 찾아본 사람이나 아는사람은 알겠지만 배열 출력할 때 형식이

${var_array[index]} 라고 다들 글을 올려놨는데 .. 내가 설치한 버전이 이상한건지 출력되지 않는다..

그저 ${var_array[...}: Bad substitution 라고 에러만 나올뿐..

좀 더 찾아보면 왜 저걸로 내가 출력 못한건지 알 수 있겠지만.. 일단 작동도 되고 .. 퇴근시간 다 되서 나중에 찾아봐야겠다..

더구나 밑에 참고한 블로그에 가보면 두번 째 소스블록에 있는건 .. 나는 작동이 안된다 ㅠㅠ

왜 그런지 짐작되는 분 있으면 댓글 좀 달아주세요...ㅠㅠ

 

참고 블로그 : http://rasskang.tistory.com/31

+ Recent posts