korn shell에서 if, elseif 구문이 오동작을 합니다.
글쓴이: 김경태 / 작성시간: 토, 2005/02/12 - 11:04오전
echo "args num: $#" if [ $# -eq 1 ]; then if [ -f $1 ]; then echo "$1 file already exit: therefore exit" exit; fi cp frame $1 elseif [ $# -eq 2 ]; if [ -f $2 ]; then echo "$2 file already exit:therefore exit" exit; fi if [ ! -f $1 ]; then echo "$1 file is not exist:therefore exit" exit; fi cp $1 $2 elseif [ $# -eq 3 ]; if [ -f $3 ]; then echo "$3 file already exit:therefore exit" exit; fi cp frame $3 sed -e s/tb_frame_ext/$1/g frame > $3.tmp mv $3.tmp $3 sed -e s/tb_frame_ft/$2/g frame > $3.tmp mv $3.tmp $3 else echo "Usage:$0 shell_file OR" echo "Usage:$0 src_file shell_file OR" echo "Usage:$0 ext_file target_file shell_file" fi
와 같은 코드입니다. 문제는,
cps abc edf
(위 셀이름은 cps입니다)
와 같이 입력하였을 때입니다.
그러면 당연히
elseif [ $# -eq 2 ];
구문 밑으로 실행이 되어야 하는데
args num: 2
Usage:cps shell_file OR
Usage:cps src_file shell_file OR
Usage:cps ext_file target_file shell_file
와 같이 else 구문에 잡히게 됩니다.
제가 무엇을 착각해서 elseif 구문이 먹지 않을까요?
고수님들의 현명한 조언을 기대합니다. ^^;
Forums:
Korn shell은 잘 모르지만, elif expression 다음에
Korn shell은 잘 모르지만, elif expression 다음에 "then"이 빠진 것 같군요. 확인 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
korn shell에서 elseif 다음에 then을 넣으면....
error가 납니다. 그래서 어쩔수 없이 뺐는데 않되는군요.
혹시 이 부분을 아시는 분 않 계신가요?
세미콜론(;) 위치가 이상하군요.
세미콜론(;) 위치가 이상하군요.
세미콜론 위치는 맞습니다.
shell program 책을 봐도 그렇고 실제로 돌려봐도 세미콜론 때문에는 문제가 생기지 않습니다.
도대체 왜
if
elseif
else
fi
의 구조가 않 될까요?
고수님들의 현명한 조언 기대하겠습니다.
http://www.cs.princeton.edu/~jlk/kornshe
http://www.cs.princeton.edu/~jlk/kornshell/doc/man93.html
if list ;then list [ elif list ;then list ] . . . [ ;else list ] ;fi
처음 ksh man page를 봤는데.... 세미콜론 쓰임새가 일반적인
처음 ksh man page를 봤는데.... 세미콜론 쓰임새가 일반적인 언어(?)와 좀 다르긴 하군요. -_-;;;
그리고 elseif가 아니고 elif군요. elseif도 그냥 커맨드로 인식해서 오류없이(?) 그냥 if else fi로 해석되서 그것만 나오는것 같습니다.
감사합니다. ^^
고수님들의 친절한 답변에 아주 좋은 정보를 얻었습니다.
그럼 올 한해도 행복하세요. ^^
댓글 달기