Аагам Джайн получил ответ.Я добавлю некоторые объяснения, которые не вписываются в раздел комментариев.Я прошу прощения за многословие.
Рассмотрим этот пример.
Отображение параметров, заданных сценарию
test.sh:
echo "$1"
echo "$2"
Давайте запустим этот скрипт и передадим ему 2 параметра.
$> bash test.sh ls -l
Результат:
ls
-l
Первый параметр ls
, представленный $1
, отображается впервая строка.Второй параметр -l
, представленный $2
, отображается во второй строке.
Руководство по Bash - давайте посмотрим, что там написано
($ @) Расширяется до позиционных параметров, начиная с одного
См. Это: https://www.gnu.org/software/bash/manual/bash.html#Special-Parameters
Как это влияет на наш пример?Давайте немного изменим test.sh.
Расширение параметров, начиная с одного
test.sh:
echo "$@"
Давайте запустим его.
$> bash test.sh ls -l
Результат:
ls -l
$@
перечислил оба параметра в одной строке один за другим.Если бы у вас было 5 параметров, они были бы напечатаны один за другим.
Давайте немного изменим test.sh.
Добавление +
в эхо
test.sh:
echo "+" "$@"
Запустим его.
$> bash test.sh ls -l
Результат:
+ ls -l
Это значит, +
появился до того, как оба параметра были напечатаны.
Измените test.sh немного больше.
Выполните все предоставленные параметры
test.sh:
echo "+" "@"
"$@"
Давайте запустим это.
bash test.sh ls -l
Результат:
+ ls -l
total 4
-rw-r--r-- 1 eapo users 0 Sep 23 19:38 file1
-rw-r--r-- 1 eapo users 19 Sep 23 19:38 test.sh
Отлично.Как отметили комментаторы и Аагам, скрипт распечатал, что он собирался выполнить (используя echo "+" "$@"
), а затем выполнил команду."$ @" В основном просто делает ls -lh
.Терминал просто выполняет его как есть.
Давайте теперь добавим функцию в скрипт.
Добавление функции в скрипт
test.sh:
run_command() {
echo "+" "$@"
"$@"
}
run_command ls -l
Обратите внимание, что мы выполняем функцию в самом скрипте, а не в командной строке
Запустим ее.
bash test.sh
Результат:
+ ls -l
total 4
-rw-r--r-- 1 eapo users 0 Sep 23 19:38 file1
-rw-r--r-- 1 eapo users 58 Sep 23 19:41 test.sh
Надеюсь, что примеры помогут вам понять, как работает скрипт.