(완료) c shell if 질문 있습니다.

se3812533의 이미지


c shell 질문 있습니다.

아래와 같이 2 개의 파일이 있고 이 파일의 기능은 file_list 안에 라이브러리 파일들이 각각 적혀 있는데
이 파일 리스트에서 검색을 하기 위한 것입니다.

1) :find_flist 파일 내용

#!/bin/csh -f
src_find_run ./file_list.f

2) src_find_run 파일 내용
#!/bin/csh -f

foreach cell (`cat $1`)

if (egrep "and_gate" $cell) then
echo "no contents"
else
echo "file in :$cell"

endif

end

2 번 파일 내용중에 grep 으로 and_gate 라는 구문이 있는지
검색해서 검색 내용이 있으면 리턴값이 0 이라서
무슨무슨 파일에 있다 라는 메시지를 뿌려주고 싶은데
마음대로 않되네요.

도움좀 요청드려요..

doodoo의 이미지

#!/bin/csh -f
 
foreach cell (`cat $1`)
 
        egrep "and_gate" $cell > /dev/null
        if ("1" == "$?") then
                echo "no contents"
        else
                echo "file in :$cell"
        endif
 
end

테스트 해 보십시요
익명 사용자의 이미지

우선 제가 이해한 바로는

egrep 의 실행 결과를 null device 로 사라지게 한후

$? sh Status of previous command
가 검색해보니 이전 커맨드의 살태라 하네요,.

그럼 이전 커맨드의 리턴값이 1 일때 와 아닐때로 구분한다

인것 같습니다.

그런데 실행해보면

변수 구문 이라고 에러가 뜨고

에러가 뜨는 부분은

if ("1" == "$?") then
이 부분이네요.

머신의 종류에 따라
이 표현이 먹지 않는 건지요 ?

익명 사용자의 이미지

1) :find_flist 파일 내용

#!/bin/csh -f
src_find_run ./file_list.f > f_search_result
src_find_run ./file_list.f >> f_search_result

gvim f_search_result&

2) src_find_run 파일 내용
#!/bin/csh -f

foreach cell (`cat $1`)

if ( {egrep and_gate $cell > /dev/null } ) then
echo " file is --> $cell"
else
echo "no contents"

endif

end

doodoo의 이미지

죄송 ㅠㅠ
안쓰던 csh 이라 햇갈렸네요...
인터넷에 찿아보니 $? 이 아니고 $status 이네요.

#!/bin/csh -f
 
foreach cell (`cat $1`)
 
        egrep "and_gate" $cell > /dev/null
        if ("1" == "$status") then
                echo "no contents"
        else
                echo "file in :$cell"
        endif
 
end

였습니다.

사고쳤네...ㅠㅠ