Що означає $ @ як параметр функції bash script


17

Що $@означає параметр функції bash script?

Приклад:

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

Відповіді:


21

У $@змінному розкриватися для всіх параметрів , використовуваних при виконанні функції, так

function foo()
{
    echo "$@"
}

foo 1 2 3

відобразив би 1 2 3. Якщо не використовується всередині функції, вона вказує всі параметри, що використовуються при виклику сценарію. Для отримання додаткової інформації дивіться сторінку керівництва bash .


12

$ @ - одне з двох представлень "позиційного параметра" в 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т.д. в будь-якому випадку, незалежно від $@.
тердон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.