$ {@ : 2} 셸 스크립팅에서 의미하는 것은

셸 스크립트에서 볼 수 있습니다.

variable=${@:2} 

무엇을하나요?

댓글

  • 대본에 정확히 표시 되었나요? 구문은 배열처럼 보이지만 일부가 누락되었습니다. 스크립트에서이 줄 주위에 몇 줄을 게시 해 주시겠습니까?
  • 두 번째 글자로 시작하는 변수입니다. var="my_value"; echo var="${var[@]:2}"; echo "$var" 차이점이 보이십니까?

답변

Bash에서 특수 변수 $@의 내용을 표시합니다. 여기에는 모든 명령 줄 인수가 포함되어 있으며이 명령은 두 번째 인수의 모든 인수를 가져 와서 변수에 저장합니다. , variable.

여기에 exampe 스크립트가 있습니다.

#!/bin/bash echo ${@:2} variable=${@:3} echo $variable 

실행 예 :

./ex.bash 1 2 3 4 5 2 3 4 5 3 4 5 

참조

주석

  • 표시된 기술은 주어진 인수를 단일 끈. 별도의 인수로 유지해야하는 경우 배열을 사용합니다. vars=( "${@:2}" )
  • @glennjackman-지적 해 주셔서 감사합니다.
  • 또한 중괄호 사용에 유의하십시오. 항상 중괄호를 사용해야하지만 Bash는 컨텍스트가 명확 할 때이를 생략 할 수 있도록합니다. 따라서 $@${@}는 동일하지만 후자는 " 더 정확합니다 " 구문. $@:2는 모호하고 따라서 ${@}:2<로 해석되기 때문에 ${@:2}와 함께 대괄호를 사용해야합니다. / div>는 동일하지 않습니다.

답변

그것 “은 ksh 기능은 bash 및 최신 버전의 zsh에서도 찾을 수 있습니다.

kshbash, ${array[@]:first:length} 구문을 사용하여 배열의 여러 요소에 액세스 할 수 있습니다. 최대 length (또는 length가 생략 된 경우 모두)까지 array 요소까지 확장됩니다. 배열 (인덱스에서 숫자로 정렬 된 배열 요소 목록에서), 인덱스가 first보다 크거나 같은 첫 번째 항목부터 시작합니다. 스칼라 컨텍스트에있을 때 (예 : 스칼라 변수에 할당) 요소 목록은 공백 ch로 결합됩니다. bashksh93이고 첫 번째 문자가 $IFS 인 aracters (또는 $IFS는 비어 있거나 설정되지 않은 경우 공백) zsh로 표시됩니다.

예 :

$ a[23]=a a[5]=b a[235]=c a[45]=d $ x=${a[@]:12:2}; printf "<%s>\n" "$x" <a d> 

$@는 특별한 경우입니다. $@는 위치 매개 변수의 배열입니다 ($1, $2 …). 그러나 :와 함께 사용하면 $0도 포함됩니다. 따라서 ${@:1}는 다른 배열과 마찬가지로 ${@:0}가 아니라 $@와 동일합니다.

p>

zsh에서는 약간 다릅니다. zshksh 구문은 호환성을 위해 최근에야하지만 요소 범위를 선택하는 자체 구문이 있습니다.

kshbash, zsh 배열은 스칼라 변수와 다른 변수 유형이며 희소하지 않습니다 (zsh는 다른 변수 유형으로 연관 배열을 가짐). 0 대신 인덱스 1에서.

zsh의 경우 $a[first,last] (여기서 last는 끝부터 거꾸로 계산하기 위해 음수 일 수도 있습니다).

zsh에서

a[23]=a a[5]=b a[235]=c a[45]=d 

대부분이 비어있는 235 개의 요소로 배열을 만듭니다. $a[12,50]는 요소 12 ~ 50으로 확장되고 ${a[@]:12:2}는 (빈) $a[12] 및 요소. 특수한 경우이며 ksh93bash의 이식성을 위해 다시, zsh도 허용합니다. $@에 대한 0 첫 번째 요소이며 $0로 취급합니다.

따라서 ${a[@]:x:n}${@:x:n}를 3 개 셸 모두에서 이식 가능하게 사용할 수 있지만 희소하지 않은 배열에만 사용할 수 있습니다. IFS의 가치.

설명

  • 배열 색인 구문을 설명해 주셔서 감사합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다