2015-02-05 106 views
0

我是unix及其开发人员的新手。在我new.sh剧本我写使用unix shell运行简单程序

$USERNAME=user 
$PASSWORD=sekrit 

echo $USERNAME 

,并使用bash new.sh

new.sh但我得到以下错误

new.sh: line 1: =user: command not found 
new.sh: line 2: =sekrit: command not found 

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

回答

3

USERNAME是变量的名称。 $USERNAME是替换(又名内容,又名值)。由于USERNAME为空,因此您有效尝试运行名为=user的命令,这是错误消息告诉您的。

从$ $USERNAME=...中删除$,它将起作用。

+2

延斯感谢你的工作。现在我知道如何在unix脚本中使用局部变量 – 2015-02-05 14:51:50

1

由于Jens音符在他answer,问题是,一个赋值给一个变量不与$前缀,所以:

USERNAME=user 
PASSWORD=sekrit 

是写你想要什么样的方式。因为USERNAME未设置你得到一个错误,所以膨胀后,壳看着命令为:

=user 
=sekrit 

,它无法找到系统(不是很奇怪)对这样的命令。但是,要知道,如果你以前写的:

USERNAME=archipelago 
PASSWORD=anchovy 

然后行:

$USERNAME=user 
$PASSWORD=sekrit 

本来等同于书写:

archipelago=user 
anchovy=sekrit 

你可以看到,运行set没有争论;它会显示所有在shell中设置的变量的值。您可以搜索USERNAME和群岛等单词,查看发生了什么。

现在你已经知道了,忘了它。您需要使用它的次数非常有限(但在需要它时很少见 - 非常罕见)。

出于所有实际目的,请勿在shell中的变量赋值的左侧写入$

+0

非常感谢你 – 2015-02-05 14:59:14

+1

不客气。你可能会注意到,即使你在看电视节目的时候(例如在英国,也可能受到英国而不是美国影响的其他地区),通常使用“节目”作为计算机程序。 – 2015-02-05 15:04:20

+0

谢谢你家伙。 – 2015-02-05 15:05:49