2014-01-14 4 views
1

Я читаю библиотеку синтаксического анализа bash, чтобы лучше синтаксис bash.Что означает «x [y] = ([z] = w)» означает в bash?

С помощью библиотеки, каким-то образом я получаю сценарий, как:

x[y]=([z]=w) ls > log

Я думаю, что х [у] здесь является операция массива. Тогда что означает «([z] = w)» означает?

+0

Да, я не понял, что это действительно не было, пока я не запускать саму присвойте часть. Исходная строка не даст сообщение об ошибке. – Magicloud

+0

, когда присваивание выполняется встроенным с помощью команды, присваивание действует только во время выполнения строки. если вы запустите 'a = 1 bash', тогда' echo $ a' вы получите 1 в новой оболочке bash, но как только вы выйдете из новой оболочки, вы увидите, что '$ a' не будет иметь значения. Назначение в этом коде (действительное или нет) доступно только внутри ls, но не вне его. – alvits

ответ

1

человек Баш:

Arrays are assigned to using compound assignments of the form 
name=(value1 ... valuen), where each value is of the form [subscript]=string. 

, например:

$ declare -A foo 
$ foo=([one]=1 [two]=2) 
$ echo ${foo[one]} 
1 
$ echo ${foo[two]} 
2 
+0

Шахта фактически недействительна. Я не понял конструктор списка. – Magicloud

Смежные вопросы