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

发布于 2024-11-17 01:14:00 字数 168 浏览 2 评论 0原文

在 bash 中这是可行的:

var1=abc

但这会给出一个错误:

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

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

In bash this works:

var1=abc

But this gives an error:

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

Why so? Why is the expression treated as a command?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半衾梦 2024-11-24 01:14:00

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

姓名

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

左侧的值不是标识符。这是一种表达。因此该命令(计算整个表达式)无效。

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

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

name

A word consisting solely of letters, numbers, and underscores, and beginning with a letter or underscore. Names are used as shell variable and function names. Also referred to as an identifier.

The value on the left hand side is not an identifier. It is an expression. Therefore that command (to evaluate the entire expression) is invalid.

In other words, you can't have asterisks in names, and you can't generate a variable name by doing some math (multiplying).

土豪 2024-11-24 01:14:00

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

Invalid character (asterisk) for a variable identificator.

无需解释 2024-11-24 01:14:00

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

3.230 名称

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

POSIX defines shell variable names to consist of alphanumerics and underscore, and not starting with a digit. (There are special variables which violate this; they are always single characters, and they cannot collide with user defined variables.)

3.230 Name

In the shell command language, a word consisting solely of underscores, digits, and alphabetics from the
portable character set. The first character of a name is not a digit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文