2015-02-05 61 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