일부 명령줄 매개변수를 사용자 배열에 저장

일부 명령줄 매개변수를 사용자 배열에 저장

나에겐 이런 일을 할 능력이 있고,

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]

관련 정보