2014-01-14 3 views
0

나는 내 프로젝트 중 하나에 대해 매우 기본적인 배시 옵션 파서를 작성하려고 노력 해왔다. 다음과 같은 아이디어는 다음과 같습니다배쉬 배열에 요소 추가하기

  • 나는 그들 중 일부는 옵션입니다, 명령 줄 인수의 목록을 공급
  • 내가
  • 나는 두 개의 배열로 끝날 것입니다 별도의 배열로 옵션을 추출 할 : 인수
    • 한 배열 옵션
에 대한
  • 하나의 배열

    참고 : 인수를 취하는 선택적 옵션 및 옵션은 신경 쓰지 않습니다. 내 목적에 따라 모든 옵션이 전환됩니다. 당신이 출력에 볼 수

    parse() { 
        options=() 
        arguments=() 
    
        for arg 
        do 
        if [[ $arg = -* ]] 
        then 
         options+=("$arg") 
        else 
         arguments+=("$arg") 
        fi 
        done 
    
        echo $options 
        echo $arguments 
    } 
    
    # $ parse --one --two -v "FOO" "BAR" 
    # => --one 
    # => FOO 
    

    문제는, 첫 번째 옵션을 선택하고 첫 번째 인수는 배열에 저장되어 있다는 것입니다 : 여기

    내가 지금 가지고있는 코드입니다.

    내가 뭘 잘못하고 있니?

  • 답변

    3

    구문 분석 및 저장은 정상이며 출력이 잘못되었습니다. 배열의 첫 번째 요소 만 인쇄합니다. 올바른 구문에 대한 man bash에서

    페이지의 "배열"

    echo "${options[@]}" 
    echo "${arguments[@]}"