Почему я не могу использовать шаблоны подстановочных знаков в переменных назначениях? - PullRequest
0 голосов
/ 27 июня 2011

В bash это работает:

var1=abc

Но это дает ошибку:

var*1=abc
var*1=abc: command not found

Почему так? Почему выражение рассматривается как команда?

Ответы [ 3 ]

1 голос

Недопустимый символ (звездочка) для идентификатора переменной.

1 голос
/ 27 июня 2011

POSIX определяет имена переменных оболочки, которые состоят из буквенно-цифровых символов и подчеркивания, а не начинаются с цифры.(Существуют специальные переменные, которые нарушают это; они всегда являются одиночными символами и не могут конфликтовать с пользовательскими переменными.)

3.230 Имя

В языке команд оболочки словосостоящий исключительно из подчеркиваний, цифр и алфавитов из переносимого набора символов.Первый символ имени не является цифрой.

1 голос
/ 27 июня 2011

С http://www.gnu.org/software/bash/manual/bashref.html

name

Слово, состоящее исключительно из букв, цифр и подчеркиваний, и начинающееся с буквы или подчеркивания.Имена используются как имена переменных и функций оболочки.Также называется идентификатором.

Значение слева не является идентификатором.Это выражение.Поэтому эта команда (для оценки всего выражения) недопустима.

Другими словами, у вас не может быть звездочек в именах, и вы не можете сгенерировать имя переменной, выполнив некоторую математику (умножение).

...