Я пытаюсь понять скрипт bash и У меня проблема со следующей строкой:
result=${!#}
Я нашел часть решения (!
внутри ${}
) здесь:
Если первым символом параметра является восклицательный знак (!), он вводит уровень косвенной переменной. Bash использует значение переменной, образованное из остатка параметра, в качестве имени переменной; затем эта переменная расширяется, и это значение используется в остальной части подстановки, а не значение самого параметра. Это известно как непрямое расширение.
Другая часть решения (#
внутри ${}
) находится здесь а>:
Подставляется длина в символах развернутого значения параметра. Если параметр — «» или «@», подставляемое значение — это количество позиционных параметров. Если параметр представляет собой имя массива с индексом «» или «@», подставляемое значение представляет собой количество элементов в массиве. Если параметр представляет собой имя индексированного массива с отрицательным индексом в индексе, это число интерпретируется как относительное на единицу большее, чем максимальный индекс параметра, поэтому отрицательные индексы отсчитываются от конца массива, а индекс -1 ссылается на последний элемент.
Но я не знаю, как эти два объединяются в result
. Что делает эта строка?