Ответы:
В $@
переменном раскрываться для всех параметров , используемых при вызове функции, так
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.
$1
и$2
т. Д., Независимо от$@
.