我有这个名为 test.sh 的脚本:
#!/bin/bash STR = "Hello World" echo $STR
当我跑步时,sh test.sh我得到了这个:
sh test.sh
test.sh: line 2: STR: command not found
我究竟做错了什么?我在网上查看了非常基本的/初学者 bash 脚本教程,这就是他们所说的声明变量的方式......所以我不确定我做错了什么。
我在 Ubuntu Server 9.10 上。是的,bash 位于/bin/bash.
/bin/bash
=标志周围不能有空格。
=
当你写:
STR = "foo"
bash 尝试运行一个以STR2 个参数(字符串=和foo)命名的命令
STR
foo
STR =foo
bash 尝试运行以STR1 个参数(字符串=foo)命名的命令
=foo
STR= foo
bash 尝试foo在其环境中将 STR 设置为空字符串来运行命令。
我不确定这是否有助于澄清或仅仅是混淆,但请注意:
STR "=" "foo"
STR "=foo"
STR="" foo
sh 语言规范的相关部分,第 2.9.1 节指出:
“简单命令”是一系列可选的变量赋值和重定向,以任何顺序,可选地后跟单词和重定向,由控制运算符终止。
在这种情况下, aword是 bash 将要运行的命令。任何包含=(在字符串开头以外的任何位置)的字符串不是重定向,并且其中字符串之前的部分=是有效的变量名是变量赋值,而任何不是重定向的字符串或变量赋值是一个命令。在STR = "foo",STR不是变量赋值。
word