19 Из Расширенного руководства по написанию сценариев, чтобы получить последний аргумент командной строки: Или: lastarg=${!#} это косвенная ссылка на $#переменную. Обратите внимание, что lastarg=${!$#}это не работает. bash flerb источник 4 Кроме того, АБС довольно не одобряется в качестве ссылки; см. wooledge.org/~greybot/meta/abs для ознакомления с историей его фактоида в канале irc.freenode.org # bash. Вики Баш-хакеров и Wooledge BashGuide не столь печально известной плотности для неточностей. В последнем случае косвенные ссылки подробно описаны в BashFAQ # 6 ; в первом wiki.bash-hackers.org/syntax/pe#indirection Чарльз Даффи, 1 Просто вопрос: не !$проще ли и то же самое? unxnut Ответы: 27 Как говорится, это косвенная ссылка. Возьмите следующий пример: $ var=test $ test='Hello, world' $ echo ${!var} Hello, world Теперь, если бы я должен был установить следующие позиционные параметры: $ set -- one two three И $#будет представлять общее количество позиционных параметров: $ echo $# 3 Это означает, что когда я называю это так, как ${!#}я говорю, дайте мне значение параметра с именем 3: $ echo ${!#} three Jesse_b источник
27 Как говорится, это косвенная ссылка. Возьмите следующий пример: $ var=test $ test='Hello, world' $ echo ${!var} Hello, world Теперь, если бы я должен был установить следующие позиционные параметры: $ set -- one two three И $#будет представлять общее количество позиционных параметров: $ echo $# 3 Это означает, что когда я называю это так, как ${!#}я говорю, дайте мне значение параметра с именем 3: $ echo ${!#} three Jesse_b источник
!$
проще ли и то же самое?Ответы:
Как говорится, это косвенная ссылка. Возьмите следующий пример:
Теперь, если бы я должен был установить следующие позиционные параметры:
И
$#
будет представлять общее количество позиционных параметров:Это означает, что когда я называю это так, как
${!#}
я говорю, дайте мне значение параметра с именем3
:источник