"$@"
방금 읽기 시작 했는데 배열의 요소를 "$*"
구체적으로 가리키는 것이 가능한지 궁금합니다 . "$@"
루프를 사용하지 않고 루프에서 요소 번호 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
개별 구성 요소에 액세스할 수 있습니다.