我是unix及其开发人员的新手。在我编写的new.sh
脚本中
$USERNAME=user
$PASSWORD=sekrit
echo $USERNAME
并使用new.sh
bash new.sh
但我收到以下错误
new.sh: line 1: =user: command not found
new.sh: line 2: =sekrit: command not found
如何运行该命令并在终端中打印用户名变量?
答案 0 :(得分:3)
USERNAME
是变量的名称。 $USERNAME
是替代品(又名内容,又名价值)。由于USERNAME
为空,因此您有效地尝试运行名为=user
的命令,这是错误消息告诉您的。
从$USERNAME=...
移除$,它会起作用。
答案 1 :(得分:1)
在他Jens中注明answer时,问题是对变量的赋值不以$
为前缀,因此:
USERNAME=user
PASSWORD=sekrit
是写出你想要的东西的方法。由于未设置USERNAME,因此出现错误,因此在扩展后,shell将命令视为:
=user
=sekrit
并且它无法在系统上找到这样的命令(不是很令人惊讶)。但是,请注意,如果您之前已写过:
USERNAME=archipelago
PASSWORD=anchovy
然后是行:
$USERNAME=user
$PASSWORD=sekrit
本来相当于写作:
archipelago=user
anchovy=sekrit
你可以通过运行没有参数的set
来看到它;它会显示shell中设置的所有变量的值。您可以搜索USERNAME和archipelago等单词以查看发生的情况。
现在你已经学会了,忘了它。您需要使用它的次数非常有限(但是对于那些罕见的 - 非常罕见的 - 在您需要它的时候它很方便)。
出于所有实际目的,不要在shell中的变量赋值的左侧写一个$
。