나에겐 이런 일을 할 능력이 있고,
array=(2 46 7 4 2 1 1 1 23 4 5)
store=(${array[*]:5:5})
echo ${store[@]} # print 1 1 1 23 4 5
이제 사용자 배열에서 위치 5의 5개 요소를 추출하는 대신 다음을 추출해야 합니다.5의 명령줄 매개변수이후. 이와 같은 것을 시도했지만 출력이 비어 있습니다.
store=(${$[*]:5:5}) # <----------------- Something to be changed here?
echo ${store[@]} # EMPTY OUTPUT
어떤 도움이라도, 위치에서 n 매개변수를 저장하는 방법달배열로 계속하시겠습니까?
답변1
bash
( 및 zsh
및 에서 ksh93
일반적인 형식은 다음과 같습니다.매개변수 확장또는 Substring Expansion
다음과 같을 수도 있습니다:
${parameter:offset:length}
생략 하면 인수의 끝 부분 length
까지 이동하게 됩니다 .offset
귀하의 경우:
array=(2 46 7 4 2 1 1 1 23 4 5)
store=( "${array[@]:5}" )
printf '%s\n' "${store[@]}"
요소 에서 6th
마지막 요소까지 생성됩니다.
그리고 $@
:
printf '%s\n' "${@:5}"
$5
위치 인수의 끝까지 생성됩니다 .
split+glob
또한 연산자가 해당 요소에 적용되는 것을 방지하려면 배열 변수를 따옴표로 묶어야 합니다 .
Pass zsh
, 다른 구문을 사용할 수 있습니다.
print -rl -- $argv[5,-1]