Что $@
означает параметр функции скрипта bash?
Пример:
function foo()
{
echo "$@" 1>&2;
}
В $@
переменном раскрываться для всех параметров , используемых при вызове функции, так
function foo()
{
echo "$@"
}
foo 1 2 3
будет отображаться 1 2 3
. Если не используется внутри функции, он указывает все параметры, используемые при вызове скрипта. Смотрите страницу руководства bash для получения дополнительной информации.
$ @ - это одно из двух представлений «позиционных параметров» в 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.
Я ожидаю, что это означает, что взять в качестве хэша все входные параметры. Поэтому, если есть 3 входных параметра, они будут доступны внутри функции в виде $ 1, $ 2, $ 3
$1
и$2
т. Д., Независимо от$@
.