Подумав, можливо вам буде теж цікаво. Потрібно визначитись з термінологією, застряг на перекладі:
${parameter}
If the first character of parameter is an exclamation point, a level of
variable indirection is introduced. Bash uses the value of the variable
formed from the rest of parameter as the name of the variable; this vari-
able is then expanded and that value is used in the rest of the substitu-
tion, rather than the value of parameter itself. This is known as indi-
rect expansion.
Пояснення що це означає насправді:
Припустимо, значенням однієї змінної є назва іншої змінної. Завдяки
indirection, ми можемо з першої змінної дістати значення другої :
a=b; b="something". Діставання з $a "something" називається
indirect reference у sh це можна зробити завдяки eval a=\$$b; bash вводить новий синтаксис: ${!a}.
sh: a=b b="something" echo $a # b eval \$$a echo $a # something
| bash: a=b b="something" echo $a # b echo ${!a} # something ### No need in eval ###
|
В словнику:
indirection level = число проміжних змінних
indirection operator = операція розіменування (повинно бути
оператор)
Тож, терміни для перекладу:
indirection -
непряме звертанняvariable indirection -
непряме звертання до змінноїindirect reference -
непряме звертання (посилання на)indirect expansion -
непряме розвернення
tilde expansion -
розширення (розвернення) тильди echo ~tech # /home/tech parameter expansion -
розширення (розвернення) параметрів echo ${a:?"variable a not set"}command substitution -
заміна команди ls -l $(which ls) arithmetic expansion -
арифметичне ... (розширення розвернення) echo $((2+2))substring expansion -
розширення (розвернення) підрядка a="boobadoo" ; echo ${a:3:3}