2013-02-17 2 views
2

Zsh имеет две приятные функции: ключевое слово local и концепцию массивов.Локальные массивы в zsh

local my_var # Declare variable local to this function 

и

arr=(1 2 3) # Create array with 3 elements 
arr+=4 # Add a fourth element 

соответственно.

Идея их комбинирования (local arr=()) неотразимая, но, видимо, просто дайте ошибку? Является ли это возможным?

ответ

6

По крайней мере, ситуация в 1999, что это не возможно, на одной линии, но эта работа вокруг существует:

local arr 
arr=() 

кредиты должны пойти Питер Стивенсон для ответа на этот тогда.

4

Конечно, теперь вы можете сделать:

local -a arr 
+0

"Сейчас"? Это новая вещь? – Tarrasch

+0

Наверное, нет, но я не знаю, когда (если когда-либо) это было впервые введено. AFAIK 'local' всегда был оболочкой для' typeset', поэтому я полагаю, что это было законно, пока массивы были в 'zsh. – PythonNut

+2

Я считаю, что этот ответ неверен. 'local -a arr = (1 2 3)' все еще дает 'zsh: неизвестный атрибут файла'. Помните, я хотел установить переменную * new * и * local * в значение массива. – Tarrasch