Скажем, у меня есть команда:

somecommand "$@"

Каково значение $ @? Это должно быть какая-то хитрость с Unix, с которой я не знаком. К сожалению, так как все это пунктуация, я тоже не могу гуглить.

1 ответ1

5

Это параметры текущего сценария оболочки или функции, которые указаны в кавычках.

man bash говорит:

@ Расширяется до позиционных параметров, начиная с единицы. Когда раскрытие происходит в двойных кавычках, каждый параметр раскрывается в отдельное слово. То есть "$@" эквивалентно "$1" "$2" ...


Учитывая следующий скрипт:

#!/usr/bin/env bash

function all_args {
    # repeat until there are no more arguments
    while [ $# -gt 0 ] ; do
        # print first argument to the function
        echo $1
        # remove first argument, shifting the others 1 position to the left
        shift
    done
}

echo "Quoted:"
all_args "$@"
echo "Unquoted:"
all_args $@

Это происходит при выполнении:

$ ./demo.sh foo bar "baz qux"
Quoted:
foo
bar
baz qux
Unquoted:
foo
bar
baz
qux

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .