질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

솔라리스에서 돌리던 스크립트를 리눅스에 적용시....

작성자 정보

  • 이석민 작성
  • 작성일

컨텐츠 정보

본문

솔라리스(혹은 HP_UX,ReliantUNIX-Y등등) 에서 돌리던 스크립트를 리눅스에 적용 시키려는데..
한부분에서 애러가 나네요..

#test.sh

##### Variable Definition

HOSTOS=`uname -a | awk '{print $1}'`
HOST=`uname -a   | awk '{print $2}'`

export LANG=C

##### check System is alive
case ${HOSTOS} in
   "HP-UX")
      bdfC="bdf"
      /usr/sbin/ping ${HOST} -n 2 > /dev/null 2>&1 ;;
   "ReliantUNIX-Y"|"SunOS")
      bdfC="df -k"
      /usr/sbin/ping ${HOST} 2 > /dev/null 2>&1 ;;
   "AIX")
      bdfC="df -k"
      /usr/sbin/ping -c 1 ${HOST} > /dev/null 2>&1 ;;
   "Linux")
      bdfC="df -k"
      /usr/sbin/ping -c 1 ${HOST} > /dev/null 2>&1 ;;

   *)
      echo "Invalid OS type"
      exit ;;
esac

if [ $? -ne 0 ]
then
   echo ${HOSTNAME}\t"No Answer, check System!! "
   continue

fi

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

위의 스크립을 실행하면....

솔라리스 혹은 hp_ux 에선...

[Solaris]# ./test.sh
[Solaris]#

...처럼...아무 메세지없이 정상적으로 커맨드가 떨어지는데요..

 

리숙스에선..  

[LINUX]# ./test.sh

No Answer, check System!!
./test.sh: line 32: continue: only meaningful in a `for', `while', or `until' loop

[LINUX]#

... 와 같이.. 오류가 생깁니다.

어떤부분을 수정을 해야 할지요??

 

관련자료

댓글 2

장규승님의 댓글

  • 장규승
  • 작성일
bash버젼따라 문법성 차이가 조금씩있습니다. 저기 continue 부분에서 에러가 발생하는것으로
사용하실 linux 의 bash버젼에서는 for,whiel, untile  같은 반복문에서만 continue가 사용되어 집니다.

case 문을 함수로 만들어서 사용하시면 간편해질듯합니다.
if [ $? -ne 0 ]
then
  echo ${HOSTNAME}\t"No Answer, check System!! "
  함수호출
fi

이런식으로..ㅎㅎ

이석민님의 댓글

  • 이석민
  • 작성일
//장규승님
답변 감사합니다. 골머리 앓고 있었는데 덕분에 잘 해결 되었습니다.
그리고 추가적인 질문으로..
위의 솔라리스의 "/usr/sbin/ping ${HOST} 2 > /dev/null 2>&1" 처럼..
리눅스에서의 표현은 어떻게 되나요??]

위에서 처럼 "/usr/sbin/ping -c 1 ${HOST} > /dev/null 2>&1"으로 하였는데..
if [ $? -ne 0 ] 부분에 걸려 "No Answer, check System!"가 출력되네요..

공지사항


뉴스광장


  • 현재 회원수 :  60,150 명
  • 현재 강좌수 :  36,434 개
  • 현재 접속자 :  253 명