Автор Гілка: Indirection - проміжна змінна, розіменування?  (Прочитано 3602 раз)

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
Подумав, можливо вам буде теж цікаво. Потрібно визначитись з термінологією, застряг на перекладі:
${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}
« Змінено: 2005-06-19 05:49:56 від tech »

Відсутній Yaroslav Fedevych

  • Літератор
  • ******
  • дописів: 1069
  • Карма: +0/-0
  • Людина — ніщо, справа — все
Не розвернення (це на 180 градусів), і не розширення (тіл від нагрівання), а розкриття (як-от дужок)!

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
розкриття тильди
розкриття параметрів
арифметичне розкриття
розкриття підрядка

 ??? Можливо, щось краще можна знайти, просто не дуже те, не йде мова лише про дужки.
Розвернення не в сенсі градусів, а в сенсі килимка. Хоча правильніше - розгорнення... хмм.
Залишається, напевне,  тільки розширення, яке було з самого початку. Так ~  розширюється у /home/jafd.  
Загляніть, Ярославе, у Wiki  bash.1,  там трохи добавилось.

Ні, хлопці, все-таки це - розгортання. ;D
(Parameter) expansion:
1. розширення
2. розвернення (-)
3. розкриття
4. розгортання (розгорнення)

Як скажете так і буде.
« Змінено: 2005-06-19 11:27:42 від tech »

Відсутній Yaroslav Fedevych

  • Літератор
  • ******
  • дописів: 1069
  • Карма: +0/-0
  • Людина — ніщо, справа — все
Чому аналогія з дужками? Дужки в алгебрі вельми часто використовуються для 1) скорочення запису виразу, ну хоча б-от $(x+y)^2 = x^2 + 2xy + y^2$, 2) для внесення ясності до виразу. До того ж, операція розкривання дужок так і називається -- brackets expansion. Гадаю, алгебра існує довше за інформатику, то й термін прийшов звідти. Тож і нам нічого вигадувати.