솔라리스에서 돌리던 스크립트를 리눅스에 적용시....
작성자 정보
- 이석민 작성
- 작성일
컨텐츠 정보
- 1,655 조회
- 2 댓글
- 0 추천
- 목록
본문
솔라리스(혹은 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]#
... 와 같이.. 오류가 생깁니다.
어떤부분을 수정을 해야 할지요??
관련자료
-
이전
-
다음
장규승님의 댓글
- 장규승
- 작성일
사용하실 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!"가 출력되네요..