>> Edit article
이름
제목
패스워드
: 프로그램은 다음과 같습니다 : 한번 보시면 어떤 기능을 하는지 아실거 같습니다 : : # : # 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