2014-08-29 2 views
-1

사용자의 디렉터리에 파일을 저장하는 셸 스크립트를 작성해야합니다 (사용자가 매개 변수에 넣음).이 파일에는 매개 변수에 전달 된 파일에 대한 정보가 들어 있습니다 .wc로 파일을 만드는 쉘 스크립트

-c 옵션이있는 경우 매개 변수로 전달 된 파일의 행, 단어 및 문자 수를 포함하는 count라는 파일을 만듭니다.

-d 옵션이있는 경우. 매개 변수로 전달 된 디렉토리에서 count라는 파일을 지 웁니다. 우리는 매개 변수에 전달 된 디렉토리 이것은 내가 지금까지있어 무엇

쉘 스크립트가 필요한 권한을 가지고있는 디렉토리에 있다고 가정하지만

일을 아직

#!/bin/bash 

while test $# -gt 0; do 
    case "$1" in 
       -c) 
        cd $HOME && wc * > count 
        ;; 
       -d) 
        cd $HOME && rm -f count 
        ;; 
      *) 
        break 
        ;; 
    esac 
작동하지 않습니다
+0

그래서 문제/질문은 무엇입니까? 행운을 빕니다! – shellter

+1

사용자 이름과 파일이 매개 변수로 전달된다고하셨습니다. 이 매개 변수를 어디에서 사용하고 있습니까? – Barmar

+0

죄송합니다 내 질문에 대한 명확하지 않았거나, 더 나은 또는 모든 분명한 실수를 여기서 내가 일을해야 볼 수있는 모든 팁? 그것은 VM웨어에서 실행되는 할당과 우분투 때문에 루트로 로그인하려고 시도한 순간부터 추락했습니다 (하지만 다른 이야기입니다). 그래서 나는 그 순간에 그것을 실제로 테스트 할 수 없다. – user3742475

답변

1

$# 절대 위치 매개 변수의 수를 줄이기 위해 shift을 사용하지 않으므로 결코 감소하지 않습니다. 루프는 첫 번째 인수를 반복 처리합니다.

#!/bin/bash 

while test $# -gt 0; do 
    case "$1" in 
       -c) 
        cd $HOME && wc * > count 
        ;; 
       -d) 
        cd $HOME && rm -f count 
        ;; 
      *) 
        break 
        ;; 
    esac 

    shift # Use this to modify $# 

done 
관련 문제