이유모를 shell script fi 에러 ㅠㅠ
제가 simplescalar와 spec2000을 이용하여 테스트를 하고 있습니다.
그런데 cygwin이나 ubuntu를 이용하여 테스트를 하려고 하고있습니다 제 shell script는
#!/bin/sh
if [ $# -eq 1 ]
then
#RESULT_DIR=result/`date '+%Y%m%d_%H%M%S'`
RESULT_DIR=result/$1
SPEC_GZIP_DIR=spec2k/gzip
SPEC_GZIP=${SPEC_GZIP_DIR}/gzip
SPEC_GZIP_INPUT="source graphic random program"
SPEC_GCC_DIR=spec2k/gcc
SPEC_GCC=${SPEC_GCC_DIR}/cc1
SPEC_GCC_INPUT="166 200 expr integrate scilab"
SS_OO=simplesim-3.0/sim-outorder
SS_OO_CONFIG="-config $1"
mkdir $RESULT_DIR
cp $1 $RESULT_DIR/config.cfg
for filename in $SPEC_GCC_INPUT; do
input=$SPEC_GCC_DIR/input/$filename
$SS_OO $SS_OO_CONFIG $SPEC_GCC $input.i -o $RESULT_DIR/$filename.s > $RESULT_DIR/$filename.out 2> $RESULT_DIR/$filename.err
done
for filename in ${SPEC_GZIP_INPUT};
do
input=$SPEC_GZIP_DIR/input/input.$filename
$SS_OO $SS_OO_CONFIG $SPEC_GZIP $input 60 > $RESULT_DIR/$filename.out 2> $RESULT_DIR/$filename.err
done
else
echo "Usage: ./run.sh config_name"
fi
입니다 여기서 자꾸만 fi 에러가 뜹니다 ㅠㅠ 정확히는 syntax error near unexpected token 'fi' 무한정 뜨네요
각종검색결과 thenㅇㄹ 줄바꿈해줘야한다. 괄호안에 한칸씩 띄어쓰기 ㄷㅇ 다해봤지만 안됩니다. 그래서 if else문을 벗겼더니
이제는 end이상 에러 ㅠㅠ 미치겠습니다 아얘 안되네요. 폴더 정확하고 이상하게 아무 sh 예제갖다 써도 if else문에서 에러가ㄸ는 엄청난일도 발생합니다. 이유가 뭘까요?ㅠㅠ
도움 부탁드립니다.(__)


그대로 복사해서 실행하니까 잘
그대로 복사해서 실행하니까 잘 되는데요?
/bin/sh 대신에 /bin/bash 로 해보시는 건 어떨까요, 보통 최근에는 sh 가 bash 의 심볼릭링크일 뿐인 걸로 압니다만 혹시 정말 오리지날 쉘이라면...
좋은 하루 되세요!
차근 차근 해보세요.
잘 모르지만. ㅡ_ㅡ... 한번 해봅니다.;;;
페도라 13에서 Virtual Box로 테스트 해봐습니다.
1. 한줄씩 적으면서 값을 디버깅 해보세요
2. {} 와 주석. 특수 기호. 문자 간격. 문장 구분등을 확인 해야 할거 같습니다. if 문이나 + 다음 한칸 띄우라고도 합니다.
3. 변수의 초기화 및 변수가 아닌데. $가 붙어있는지 등을 확인
4. bash guide 문서와 도서등을 참고 해보시면 좋습니다.
5. 문서를 보면. for문에 ;나 {}가 없지만. 페도라13에서는 상관 없는거 같습니다.
6. PATH 나 bash 관련 파일 등의 경로 지정 확인.
7. 유니코드 ANSI 윈도우 유닉스 파일 저장 설정 확인
//이 사이트가. 가장 보기 쉽고 잘 정리 되어 있습니다. http://linuxconfig.org/Bash_scripting_Tutorial#9-bash-if--else--fi-statements // http://reopera.tistory.com/188 http://tears.tistory.com/11 // http://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/loops1.html http://wiki.kldp.org/Translations//html/Shell_Programming-KLDP/index.html http://www.suse.kr/bbs/board.php?bo_table=tip&wr_id=2239&page=5 http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html http://blog.naver.com/jamesy?Redirect=Log&logNo=60125968141 http://blog.naver.com/jamesy?Redirect=Log&logNo=60167947714 http://cafe.naver.com/jobstory00/12998 http://cafe.naver.com/opensourcesw/192 http://cafe.naver.com/literaturegame/3048 http://blog.daum.net/istae0430/611 http://cafe.naver.com/sunschool/5716 // http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/nestedifthen.html http://blog.naver.com/timberx?Redirect=Log&logNo=30040438666 // http://arachnoid.com/linux/shell_programming.html http://www.cyberciti.biz/faq/unix-linux-bash-script-check-if-variable-is-empty/ http://tiger5net.egloos.com/5692417 //스크립트 문법 정리기 http://blog.naver.com/jh_ynwis?Redirect=Log&logNo=80171132100 //if [] ; then 이거 넣으니까 된다고 합니다. 그렇지만. 문법상으로는 틀린겁니다. http://cafe.naver.com/inmacbook/17965 //네이버에서 검색하고. 참고한 링크 모음 : 검색 결과가 지역이나 시기에 따라 달라서. 남겨 둡니다. 굳이 안봐도 되는 자료임 ㅡ_ㅡ;;; //다양한 문법이나 표현. 응용 방법등을 참고 하는데 도움이 됩니다. http://cafe.naver.com/inmacbook/17965 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=65320244&qb=c3ludGF4IGVycm9yIG5lYXIgdW5leHBlY3RlZCB0b2tlbiAnZmkn&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=RKQIAc5Y7vZssuw8bEosssssstw-007297&sid=UMf6AnJvLC8AAE8sBmk http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=69912169&qb=c3ludGF4IGVycm9yIG5lYXIgdW5leHBlY3RlZCB0b2tlbiAnZmkn&enc=utf8§ion=kin&rank=3&search_sort=0&spq=0&pid=RKQIAc5Y7vZssuw8bEosssssstw-007297&sid=UMf6AnJvLC8AAE8sBmk http://blog.naver.com/timan?Redirect=Log&logNo=20119139073 http://cafe.naver.com/opensourcesw/206 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=130355150&qb=YmFzaCBpZiAx&enc=utf8§ion=kin&rank=3&search_sort=0&spq=1 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=131615739&qb=YmFzaCBpZiAx&enc=utf8§ion=kin&rank=4&search_sort=0&spq=1 http://bash.cyberciti.biz/academic/sed-remove-c-cpp-comments/ http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10302&docId=149850704&qb=YmFzaCBpZiAx&enc=utf8§ion=kin&rank=1&search_sort=0&spq=1 http://blog.naver.com/adsloader?Redirect=Log&logNo=50156341067 http://devday.tistory.com/1880 //run.sh 코드 인자값을 줘야 합니다. 한글이 안되서 영어로 적음. ㅡ_ㅡ;;; #!/bin/sh echo $# #//arg count 넘겨 받은 인자값의 갯수 if [ $# -eq 1 ] ; #//add ; is noting to do. ; 아무것도 안함. then echo "arg count is 1"; RESULT_DIR=result/`date '+%Y%m%d_%H%M%S'` echo $RESULT_DIR RESULT_DIR=result/$1 echo $RESULT_DIR SPEC_GZIP_DIR=spec2k/gzip echo $SPEC_GZIP_DIR SPEC_GZIP=${SPEC_GZIP_DIR}/gzip echo $SPEC_GZIP SPEC_GZIP_INPUT="source graphic random program" echo $SPEC_GZIP_INPUT SPEC_GCC_DIR=spec2k/gcc echo $SPEC_GCC_DIR SPEC_GCC=${SPEC_GCC_DIR}/cc1 echo $SPEC_GCC SPEC_GCC_INPUT="166 200 expr integrate scilab" echo $SPEC_GCC_INPUT SS_OO=simplesim-3.0/sim-outorder echo $SS_OO SS_OO_CONFIG="-config $1" echo $SS_OO_CONFIG mkdir $RESULT_DIR echo $RESULT_DIR cp $1 $RESULT_DIR/config.cfg echo $1 $RESULT_DIR for filename in $SPEC_GCC_INPUT ; #//add ; is noting to do. do input=$SPEC_GCC_DIR/input/$filename $SS_OO $SS_OO_CONFIG $SPEC_GCC $input.i -o $RESULT_DIR/$filename.s > $RESULT_DIR/$filename.out 2> $RESULT_DIR/$filename.err echo "FILENAME: ". $filename echo "INPUT: ". $input echo "SPEC_GCC_INPUT: ". $SPEC_GCC_INPUT echo "SS_OO: ". $SS_OO echo "SPEC_GCC: ". $SPEC_GCC echo "RESULT_DIR: ". $RESULT_DIR done echo "-------------------------------------------------------------" for filename in ${SPEC_GZIP_INPUT}; #//add ; and {} is noting to do. do input=$SPEC_GZIP_DIR/input/input.$filename $SS_OO $SS_OO_CONFIG $SPEC_GZIP $input 60 > $RESULT_DIR/$filename.out 2> $RESULT_DIR/$filename.err echo "FILENAME: ". $filename echo "INPUT: ". $input echo "SPEC_GCC_INPUT: ". $SPEC_GCC_INPUT echo "SS_OO: ". $SS_OO echo "SPEC_GCC: ". $SPEC_GCC echo "RESULT_DIR: ". $RESULT_DIR done else echo "Usage: ./run.sh config_name" fi //실행시 출력 결과. [shint@localhost test9]$ ./run.sh shint 1 arg count is 1 result/20121212_150223 result/shint spec2k/gzip spec2k/gzip/gzip source graphic random program spec2k/gcc spec2k/gcc/cc1 166 200 expr integrate scilab simplesim-3.0/sim-outorder -config shint mkdir: cannot create directory `result/shint': No such file or directory result/shint cp: cannot stat `shint': No such file or directory shint result/shint ./run.sh: line 45: result/shint/166.out: No such file or directory FILENAME: . 166 INPUT: . spec2k/gcc/input/166 SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 45: result/shint/200.out: No such file or directory FILENAME: . 200 INPUT: . spec2k/gcc/input/200 SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 45: result/shint/expr.out: No such file or directory FILENAME: . expr INPUT: . spec2k/gcc/input/expr SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 45: result/shint/integrate.out: No such file or directory FILENAME: . integrate INPUT: . spec2k/gcc/input/integrate SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 45: result/shint/scilab.out: No such file or directory FILENAME: . scilab INPUT: . spec2k/gcc/input/scilab SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ------------------------------------------------------------- ./run.sh: line 59: result/shint/source.out: No such file or directory FILENAME: . source INPUT: . spec2k/gzip/input/input.source SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 59: result/shint/graphic.out: No such file or directory FILENAME: . graphic INPUT: . spec2k/gzip/input/input.graphic SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 59: result/shint/random.out: No such file or directory FILENAME: . random INPUT: . spec2k/gzip/input/input.random SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint ./run.sh: line 59: result/shint/program.out: No such file or directory FILENAME: . program INPUT: . spec2k/gzip/input/input.program SPEC_GCC_INPUT: . 166 200 expr integrate scilab SS_OO: . simplesim-3.0/sim-outorder SPEC_GCC: . spec2k/gcc/cc1 RESULT_DIR: . result/shint----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기