在Bash变量赋值中找不到命令错误怎么办?

  • 回答 (2)
  • 关注 (0)
  • 查看 (106)

我有这个脚本叫做test.sh:

#!/bin/bash
STR = "Hello World"
echo $STR

当我运行sh test.sh我得到这个:

test.sh: line 2: STR: command not found

我究竟做错了什么?我在网上看到极其基本的/初学者的bash脚本教程,这就是他们如何声明变量...所以我不知道我在做什么错了。

我在Ubuntu服务器9.10。是的,bash位于/bin/bash。

123456a134123456a134提问于
梦飞翔758WEB工程师 硬件玩家 CHH不负责版主回答于

在交互模式下,一切都很好

$ str="Hello World"
$ echo $st
Hello World

显然!正如Johannes所说,“=”周围没有空格。如果在'='周围有空格,那么在交互模式下会给出错误

找不到命令'str'

HKC

红客学院 · 创始人 (已认证)

道可道 非常道 名可名 非常名回答于

你的'='符号周围不能有空格。

当你写:

STR = "foo"

bash试图运行一个名为STR的带2个参数的命令(字符串'='和'foo')

当你写:

STR =foo

bash试图用1个参数(字符串'= foo')运行一个名为STR的命令

当你写:

STR= foo

bash试图运行命令foo,将STR设置为其环境中的空字符串。

我不确定这是否有助于澄清,或者是否仅仅是混淆,但请注意:

  1. 第一个命令完全等同于:STR "=" "foo",
  2. 第二个是一样的STR "=foo",
  3. 最后等于STR="" foo。

扫码关注云+社区

领取腾讯云代金券