为什么 Zsh 抱怨我的变量分配为“未找到命令”?

Gio*_*nni 2 zsh shell macos macos-bigsur

当我尝试在 macOS Big Sur 版本 11.5.1 上编写 Zsh 脚本时,我注意到它始终无法将我的变量识别为变量。

相反,Zsh 将它们视为类 UNIX 命令。

终端应用程序问题的屏幕截图 - Zsh shell 脚本的变量赋值问题

在上面链接的屏幕截图中,我在终端应用程序上执行了以下操作。

  • 显示了简单的 Zsh shell 脚本的内容。
  • 使用“ls -l”类UNIX命令来指示其文件权限,并表明它是可执行的Zsh shell脚本。
  • 执行了 Zsh shell 脚本,这表明 Zsh 脚本解释器抱怨我的变量名是“找不到命令”。

我的Zsh shell脚本的源代码提供如下:

#!/bin/zsh

unix_cmd = "ls -al"
Run Code Online (Sandbox Code Playgroud)

您能否让我知道我错过了什么以及我做错了什么?

我只想为 Zsh shell 脚本中的变量赋值。

非常感谢您,祝您有美好的一天!再见!

Kam*_*ski 9

为变量赋值的语法是foo=bar,不是 foo = bar。空格很重要。foo后一种语法是带有参数=和 的命令bar

几个如何=解释的例子:

代码 意义
foo=bar 适当的分配;foo现在的值为bar
foo = bar foo带参数的命令=bar
foo =bar foo带有一个参数的命令=bar
foo= bar 在其环境中bar发出命令;foo的值为foo
foo=1 bar 在其环境中bar发出命令;foo的值foo1
foo='1 bar' 适当的分配;foo现在的值为1 bar
foo=' bar' 适当的分配;现在 的值foo bar(注意前导空格)
foo=\ bar 适当的分配;现在 的值foo bar(注意前导空格)
foo-x=bar 命令foo-x=bar(因为foo-x不是 shell 变量的有效名称)

这不是 Zsh 特有的。POSIX shell ( sh) 和 POSIX 兼容 shell 的行为方式如下。Zsh(虽然通常不符合 POSIX 标准)也遵循此原则。