>> Edit article
이름
제목
패스워드
: : : : 아래 스크립트에서 case구문이 제대로 동작을 안하는데 뭐가 잘못 된건지 : : : : 답변 좀 부탁 합니다. : : : : 두번째 질문에 어떤 대답을 하던 간에 case에서 디폴트로 지정된 세번째의 : : : : 경우가 실행이 되는데 이유를 모르겠네요. 고수님들의 한수 지도 부탁 합니다. : : : : : : : : #Main routine : : : : : : : : clear : : : : echo : : : : echo "Flle and directory mode changing program" : : : : echo "Please, enter the directory to start:" : : : : read start_dir : : : : echo "Do you want to do for all subdirectories too?, (y/n)" : : : : read ANSWER : : : : echo "Mode for directories ?" : : : : read DIR_MODE : : : : echo "Mode for files ?" : : : : read FILE_MODE : : : : : : : : count=0 : : : : dir_flag=0 : : : : file_name="" : : : : DIR_0='' : : : : DDIR_0='' : : : : : : : : echo "Start DIR is $start_dir" : : : : : : : : cd $start_dir : : : : : : : : case "$ANSWER" in : : : : "[yY]" | "[Yy][Ee][Ss]" ) : : : : until [ "$DDIR_0" ] : : : : do : : : : file_change : : : : if [ "$dir_flag" -eq 1 ];then : : : : dir_move_fwd : : : : else : : : : dir_move_back : : : : fi : : : : done : : : : ;; : : : : : : : : "[nN]*" ) : : : : file_change : : : : ;; : : : : * ) : : : : echo "Sorry, answer not recognised" : : : : echo "Please answer yes or no" : : : : exit 1 : : : : ;; : : : : esac : : : : : : : : exit 0 : : : : : : : : : : +++++++++++++++++++++++++++++++++++++++ : : : # : : : # : : : # : : : 위의 case문에서는 DIR_MODE나 FILE_MODE에 대한 어떠한 선택 구문도 : : : 없으므로 read DIR_MODE 나read FILE_MODE에서 읽어들인 값은 아무런 : : : 효력도 발휘하지 못합니다.그러므로 *)에 기술된 명려이 실행되면서 : : : 스크립트는 종료됩니다. : : : DIR_MODE나 FILE_MODE에 대한 선택구문을 작성한 다음 다시 실행하시면 : : : 원하는 결과를 얻으실 수 있을 겁니다. : : : 미흡한 답변이었습니다. : : : : : : : : : 여기서 말씀하신 DIR_MODE나 FILE_MODE에 대한 값은 은 물론 효력이 없습니다. : : 읽어들인 값들은 위의 코드에서 쓰이는 게 아니라 다른 함수에서 쓰이기 때문 : : 입니다. 그 함수들은 제가 여기에 포함시키지 않았습니다. 너무 길어서서요. 그리고 그 값들은 case문엔 영향을 주질 않습니다. 예로 : : "[yY]" | "[Yy][Ee][Ss]" 이 부분을 : : "y" | "Y" | "yes" ) 이런식으로 바꾸면 위의 코드는 제대로 동작을 : : 합니다. 근데 2번째 윗줄에 적은 식으로 하면 안된다는 겁니다. : : 쉘 프로그래밍 책에 보면 위처럼 써도 된다고 나와 있는데 안되니 이해가 : : 안가는 겁니다. 다시한번 답변 해 주시면 고맙겠습니다. : : : : ++++++++++++++++++++ : # : # : # : " "를 없앤후에 실해해보세요.위의 경우는 [yY]와 같이 입력해야합니다. 답변 감사합니다. 답변처럼 고치니 잘 되네요. ^_^ 이 스크립트를 팁란에 올려? -- 이 곳에 서명을 적어주십시오. 킬리만자로의 표범
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved