특정 배열 요소 선택

특정 배열 요소 선택

"$@"방금 읽기 시작 했는데 배열의 요소를 "$*"구체적으로 가리키는 것이 가능한지 궁금합니다 . "$@"루프를 사용하지 않고 루프에서 요소 번호 3을 선택할 수 있기를 원합니다 "$@". 이것 "$1+@"이나 비슷한 방법이 있나요 ? 이미 알고 있지만 및 에 "${1}"대해 구체적으로 알고 싶습니다 . 검색해 보았지만 이와 관련된 내용을 찾지 못했습니다."$@""$*"

답변1

위치 매개변수는 배열이 아니라고 합니다.
설정하는 방법은 를 통해서입니다 set. 다른 배열에는 이것이 필요하지 않습니다.

$ set -- one two t33 f44
$ printf '%s\n' "$@"
one
two
t33
f44

그러나 적어도 bash(및 ksh 및 zsh)에서는 쉽게 선택할 수 있습니다.

$ set -- one two t33 f44
$ echo "${@:2:1}"
two
$ echo "${@:2:2}"
two t33

답변2

$@배열이 아닙니다. 단지 매개변수 목록일 뿐입니다. Bash에서는 배열을 만들고 그 안에 있는 값으로 초기화한 $@다음 인덱스를 사용할 수 있습니다.

declare -a foo=($@)

echo ${foo[2]}

배열 인덱싱은 0부터 시작하므로 위의 내용은 세 번째 인수를 스크립트에 인쇄합니다.

답변3

본질적으로 할 수 없습니다. 문제는 $*그런데 $@그렇지 않다 .정렬;간단하다변하기 쉬운. 따라서 색인을 생성할 수 없습니다.

해당 값은 단지 문자열일 뿐이며 약간 다르게 정의됩니다. 등을 사용 $1하면 $2개별 구성 요소에 액세스할 수 있습니다.

관련 정보