В приглашении, я могу напечатать:правило интерполяции при определении функции
$ e() { echo $1; }
и получить функцию, которая перекликается своим первым аргументом. Я не понимаю, почему это работает. Так как $ 1 не определено в текущей среде, кажется, что выше должно быть эквивалентно:
$ e() { echo ; }
Что соответствующего правила процитировать/интерполяции, которая позволяет это поведение? Обратите внимание, что это не имеет никакого отношения к $1
, являющемуся особенным: если вы используете $FOO
, вы получаете функцию, которая перекликается со значением $FOO
во время вызова функции, а не значением $FOO
, когда функция определена.
Иными словами, код внутри объявления функции запускается при запуске функции, а не при ее создании. – l0b0