2013-06-20 1 views
1

bash 스크립트의 입력 매개 변수를 얻으려고합니다. testbash.sh 4 1 2 4 5 Science a p * 이 인수를 $ @를 사용하여 배열로 가져 오는 배열로 가져 오려고합니다. 이제 첫 번째 인수를 기반으로 나머지 부분 집합이 필요합니다. 여기서 첫 번째 숫자는 4이므로 두 번째 인수에서 다섯 번째 인수까지는 [1 2 4 5]와 같은 배열로 저장하고 나머지 인수는 다른 배열에 저장해야합니다. bash 명령 행 인수를 배열에 넣고 매개 변수 값을 기준으로 배열을 서브 셋트

내가이

array=([email protected]) len=${#array[@]} args=${array[@]:0:$len-${array[1]}} echo $args

내가 첫 번째 부분을 얻기 위해이 시도하려하지만 난 표현에 오류 구문 오류 (오류 토큰은 "-4") 난이 "testbash.sh을 실행할 때

FIRST_SET=("${@:2:$1}") 
REST=("${@:$(($1+2))}") 

하는 중간 배열을 사용하는 대신, 인자로부터 직접 작동 : 4 1 2 3 4 5 과학의 AP * "여기

+0

은 수동으로 배열을 만들어야 할 수도 있습니다. 어쨌든 이미 시도한 코드를 게시하십시오. –

+0

내가 시도한 코드를 추가했습니다 – Vignesh

답변

4

한 방법 . 매개 변수 인덱싱이 효과적으로 1에서 시작하는 동안 (매개 변수 0이 명령 이름이기 때문에) 배열 색인이 0에서 시작한다는 것을 기억하면 다소간 같은 방법으로 중간 배열을 사용하는 것이 쉽습니다.

따옴표는 중요합니다. 따옴표가 없으면 명령 줄 인수가 여분의 시간을 나누는 glob 확장과 단어를 통해 전달됩니다. 실제로 커맨드 라인 인자를 인용 할 수있는 능력을 상실합니다.

+0

이 나던 일. FIRST_SET은 1 점만 저장하고 SECOND_SET은 아무 것도 저장하지 않습니다. – Vignesh

+0

@Vignesh : 저에게 잘 맞습니다. 어떻게 시험하고 있습니까? http://ideone.com/iDXPAX – rici

+0

test.sh 파일에 저장하고 + x 및 test.sh를 추가했습니다. 4 1 2 4 5 Science a p * – Vignesh

관련 문제