使用unix shell运行简单程序

时间:2015-02-05 14:45:31

标签: shell unix environment-variables

我是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

如何运行该命令并在终端中打印用户名变量?

2 个答案:

答案 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中的变量赋值的左侧写一个$