为什么我不能在变量赋值中使用通配符模式?

时间:2011-06-26 23:33:09

标签: linux bash pattern-matching glob

在bash中,这有效:

var1=abc

但这会产生错误:

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

为什么这样?为什么将表达式视为命令?

3 个答案:

答案 0 :(得分:1)

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

  

名称

     

单词由字母,数字和下划线组成,以字母或下划线开头。名称用作shell变量和函数名称。也称为标识符。

左侧的值不是标识符。这是一种表达方式。因此,该命令(用于评估整个表达式)无效。

换句话说,您不能在名称中使用星号,也不能通过进行一些数学运算(乘法)来生成变量名称。

答案 1 :(得分:1)

变量标识符的字符(星号)无效。

答案 2 :(得分:1)

POSIX定义shell变量名称由字母数字和下划线组成,而不是以数字开头。 (有些特殊变量违反了这一点;它们总是单个字符,并且不能与用户定义的变量发生冲突。)

  

3.230姓名

     

在shell命令语言中,单词由下划线,数字和字母组成   便携式字符集。名字的第一个字符不是数字。

相关问题