Практическое написание сценариев командной оболочки Bash/Эмуляция ссылочной адресации: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 127:
 
К сожалению данный метод имеет недостаток в том, что переменная, передаваемая по ссылке, будет хранится в глобальной памяти, и ограничить ее видимость невозможно. Для предотвращения некоторых последствий от возможных гонок, функция <code>upvar</code> делает <code>unset</code> переменной, однако такой подход все равно остается не потокобезопасным.
 
Кроме того, данный трюк (как и все трюки с <code>eval</code>) имеет потенциальные проблемы с безопасностью, если правая часть от равно никак не проверяется на содержание. Если это значение приходит в сценарий клиентской стороной, то в нее потенциально может быть передан вредоносный код, который будет исполнен до присваивания значения. Поэтому такая косвенная адресация должна использоваться только тогда, когда вы, как разработчик, понимаете что делаете.
 
== Косвенная адресация с помощью printf ==