2013-11-22 2 views

ответ

3

Первое, что нужно понять, это то, что подчеркивания действительны в идентификаторе, поэтому переменная, которая расширяется, не является $a, а $a_.

В настоящее время $a_ не установлен, что означает, что он обрабатывается как список нулевых записей. Некотируемая переменная подстановка работа за счетом расширения параметра отдельно для каждого элемента в списке, например:

> set a 1 2 3 
> echo {$a}_x 
1_x 2_x 3_x 

В изначальном вопросе $a_ пуста. Параметр расширяется отдельно для каждого элемента в списке, который пуст, поэтому результат ничего не представляет. Вот почему он ничего не выводит.

Разделы с двойным кавычкой работают по-разному: записи списка объединяются пробелами, а затем расширены.

> set a 1 2 3 
> echo "$a"_x 
1 2 3_x 

и это может вести себя, как вы ожидаете:

> set a foo 
> set b bar 
> echo "$a"_"$b" 
foo_bar 
> echo "$a_"$b 
bar 
+0

Спасибо, большое объяснение. Я исхожу из bash, где все просто строки (если вы не набросаете на них много синтаксиса). Я должен привыкнуть к рыбе переменные - это списки, если они не защищены строками. –

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