2017-10-17 1 views
0

사용자가 메뉴 스타일과 명령 행 전환 스타일 인터페이스를 모두 사용할 수있게 해주는 bash 스크립트를 작성하려고합니다. select의 메뉴 옵션에 매개 변수를 전달하는 방법이 스크립트에 대한 인수 인 것처럼 궁금합니다. 예를 들어 내 스크립트에서 junk -d file.txt이라고 말하면 정크 폴더로 이동할 파일을 지정할 수 있습니다. 그러나 사용자가 매개 변수를 지정하지 않으면 select 옵션을 사용해야합니다. 즉 1) move file 2) clear junk folder 3) watch folderbash에서 select를 사용하여 매개 변수를 전달하는 방법

이 메뉴에서 옵션을 작성한 다음 해당 옵션에 인수를 보내려합니다. 1 filetobemoved.txt처럼. 메뉴를 호출하는 메서드 후 $OPTARG 퍼팅 시도했지만이 작동하지 않는 것 같습니다.

여기 내가 지금 메뉴에 대해 가지고있는 코드입니다. 나는 recover 메소드를 호출하고 인자 (파일 이름)를 전달하려고합니다.

if (($# == 0)) 
then if (($OPTIND == 1)) 
then select menu_list in list recover delete total watch kill exit 
    do case $menu_list in 
    "list") list;; 
    "recover") recover $GETOPT;; 
    "delete") delete;; 
    "total") total;; 
    "watch") _watch;; 
    "kill") _kill;; 
    "exit") exit 0;; 
    *) echo "unknown option";; 
    esac 
    done 
fi 

도움 주셔서 감사합니다.

답변

0

함수에 사례를 실행하는 코드를 넣으십시오. 그런 다음 명령 줄 옵션을 확인하고 select을 건너 뛰고 함수를 호출하면됩니다.

do_command() { 
    case "$1" in 
    "list") list;; 
    "recover") recover $GETOPT;; # had -a after recover 
    "delete") delete;; 
    "total") total;; 
    "watch") _watch;; 
    "kill") _kill;; 
    "exit") exit 0;; 
    *) echo "unknown option";; 
    esac 
} 
if (($# == 0)) 
then if (($OPTIND == 1)) 
    then select menu_list in list recover delete total watch kill exit 
     do do_command "$menu_list" 
     done 
    fi 
elif [[ "$1" = "-d" ]] 
then do_command delete 
... 
fi 
관련 문제