이유모를 shell script fi 에러 ㅠㅠ

manghalsh의 이미지

제가 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문에서 에러가ㄸ는 엄청난일도 발생합니다. 이유가 뭘까요?ㅠㅠ

도움 부탁드립니다.(__)

raymundo의 이미지

그대로 복사해서 실행하니까 잘 되는데요?

/bin/sh 대신에 /bin/bash 로 해보시는 건 어떨까요, 보통 최근에는 sh 가 bash 의 심볼릭링크일 뿐인 걸로 압니다만 혹시 정말 오리지날 쉘이라면...

좋은 하루 되세요!

shint의 이미지

잘 모르지만. ㅡ_ㅡ... 한번 해봅니다.;;;
페도라 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&section=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&section=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&section=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&section=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&section=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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.