Bir bash script işlev parametresi olarak $ @ ne anlama geliyor?


17

$@Bir bash script function parametresi ne anlama gelir?

Misal:

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

Yanıtlar:


21

$@İşlevi çağrılırken tüm parametrelere değişken genişlediğinde bu yüzden, kullanılan

function foo()
{
    echo "$@"
}

foo 1 2 3

görüntülenir 1 2 3. Bir işlevin içinde kullanılmazsa, komut dosyasını çağırırken kullanılan tüm parametreleri belirtir. Daha fazla bilgi için bash el kitabı sayfasına bakın .


12

$ @, bash içindeki iki "konumsal parametre" ifadesinden biridir, diğeri $ *.

Hem $ @ hem de $ *, bir işleve veya komut dosyasına geçirilen tüm parametreleri temsil eden dahili bash değişkenleridir; bir anahtar farkla $ @, her parametreyi ayrı bir tırnak içine alınmış dize, $ * ise tüm parametreleri tek bir dize olarak içerir. Bu fark aşağıdaki kodda gösterilmiştir:

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

Çıktı:

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

$ * İle çağrıldığında, foo () öğesine tam olarak bir argüman iletilir, ancak $ @ ile foo () öğesine üç argüman iletilir.

Daha fazla bilgi: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF


0

Ben bir karma olarak tüm girdi parametreleri almak anlamına gelir. Dolayısıyla, 3 giriş parametresi varsa, bunlar işlev içinde $ 1, $ 2, $ 3 şeklinde kullanılabilir olacaklardır.


2
Hayır, bir fonksiyona verilen tüm parametreleri ifade eden dahili bir değişkendir. Her ne olursa olsun $1, $2vb $@.
terdon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.