>> Delete Reply from No. 22544 article
No. RE: C-Shell 스크립트 입니다 한번봐주세요

등록 2001-03-02 16:30:00 By localhost     조회 2
이름 무정한    

		: 프로그램은 다음과 같습니다
: 한번 보시면 어떤 기능을 하는지 아실거 같습니다
:
: #
: # version 0.1
:
: if ($#argv != 2) then
:        echo "usage : lfind -[ld] filename"
:        exit 1
: endif
:
: set opt = $argv[1]
: set filename = $argv[2]
: set find = `(find / -name $filename -print > /dev/tty) >& /dev/null`
: set del = `(find / -name $filename -exec rm "{}" ;) >& /dev/null`
:
: if ($opt == '-l') then
:        echo $find
: else if ($opt == '-d') then
:        echo $del
: endif
:
: 문제는 이 스크립트를 예를 들어
:
: ./lfind -l test 라고 하면 잘 찾습니다.
:
: 그런데
:
: ./lfind -d test 라고 하면 test 라는 파일을 찾아서 지워야 하는데
: 똑 같이 파일 찾기를 합니다
: 다시 말해
: echo $del 이 실행되어야 하는데
: echo $find 가 실행이 됩니다
: 어디가 잘못된거죠?
: 여러분도 한번 해보세요..
: 글고 저좀 갈켜주세요..
: 부탁합니다...
 뭔가 의미심장한 스크립트임.
어떤 파일을 찾으려고만해도
찾으려는 파일을 지울 수 밖에 없는 스크립트.
 절대 루트로 위의 스크립트를 실행시키지 말것.
 원하는 작업을 위해 다음과 같이 해볼것.
 #!/bin/csh
#----------------------------------------------------------------
if ($#argv != 2) then
print_help:
        echo "usage : lfind -[ld] filename"
        exit 1
endif
 set opt = $argv[1]
set fn = $argv[2]
 switch ($opt)
        case -[lL]:
                echo "find and list... $fn"
                (find . -name $fn -print > /dev/tty) >& /dev/null
                breaksw
        case -[dD]:
                echo "find and remove... $fn"
                find . -name $fn -exec /bin/rm -i "{}" ;
                breaksw
        default:
                echo "invalid option"
                goto print_help
                breaksw
endsw
#-----------------------------------------------------------------
 find뒤의 /를 .로 수정하였음.
원하면 .을 /로 수정가능함.
 --
외로워라 이네몸은 뉘와함께 놀아날꼬.
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved