$ @는 bash 스크립트 함수 매개 변수로 무엇을 의미합니까?


16

$@bash 스크립트 함수 매개 변수는 무엇을 의미합니까?

예:

function foo()
{
    echo "$@" 1>&2;
}

답변:


20

$@함수 호출시 모든 파라미터 변수가 팽창 정도로 사용

function foo()
{
    echo "$@"
}

foo 1 2 3

표시됩니다 1 2 3. 함수 내에서 사용되지 않으면 스크립트를 호출 할 때 사용되는 모든 매개 변수를 지정합니다. 자세한 내용은 bash 매뉴얼 페이지 를 참조하십시오.


11

$ @는 bash에서 두 개의 "위치 매개 변수"표현 중 하나이며 다른 하나는 $ *입니다.

$ @와 $ *는 모두 함수 나 스크립트에 전달 된 모든 매개 변수를 나타내는 내부 bash 변수입니다. 한 가지 중요한 차이점 은 $ @에는 각 매개 변수가 개별 인용 문자열로 있고 $ *에는 모든 매개 변수가 단일 문자열로 있습니다. 그 차이점은 다음 코드에 나와 있습니다.

foo() {
  while [ "$1" != "" ]; do
      echo $1
    shift
  done
}

dollar_at () {
    foo "$@"
}

dollar_star () {
    foo "$*"
}

echo "Using \$@"
dollar_at a b c

echo "Using \$*"
dollar_star a b c

산출:

Using $@
a
b
c
Using $*
a b c

$ *로 호출하면 정확히 하나의 인수가 foo ()에 전달되지만 $ @로 세 개의 인수가 foo ()에 전달됩니다.

추가 정보 : http://tldp.org/LDP/abs/html/internalvariables.html#APPREF


0

나는 그것이 모든 입력 매개 변수를 해시로 가져 오는 것을 의미한다고 생각합니다. 따라서 입력 매개 변수가 3 개인 경우 함수 내에서 $ 1, $ 2, $ 3 형식으로 사용할 수 있습니다.


2
아니요, 함수에 지정된 모든 매개 변수를 의미하는 내부 변수입니다. 그들은으로 사용할 수 있습니다 $1, $2관계없이, 어쨌든 등 $@.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.