2015-08-15 57 views
-4

我試圖理解爲什麼這不起作用,我得到一個錯誤是有無論如何有人可以給我一個提示?以下是錯誤味精./pass:3號線:找不到命令只是測試一個小腳本,我做了

#!/bin/bash 

p = hello 

read $* 

if [ "$*" = "$p" ] 
     then 
       echo "correct password!" 
     else 
       echo "wrong password dork" 
fi 
+2

請描述此程序應該做什麼以及它現在做什麼(即錯誤消息)。我還應該指出,通過在文本編輯器中打開腳本並查看密碼來繞過這一點很簡單。 –

+0

這裏是錯誤消息./pass:第3行:p:命令沒有找到 這只是一個腳本,用於unix系統上的測試目的,它沒有在任何地方實現,我是bash腳本編程新手... –

+0

嘗試刪除第3行中賦值運算符'='周圍的空格。 – lenz

回答

0
  1. 不要使用$*
  2. 設置變量時,不要使用$性格:對。
  3. 不要把空間圍繞=登錄分配

$*是包含在命令行中的參數列表,你提供的,當你調用的腳本一個特殊的變量。它不應該寫在劇本中。所以,如果你輸入

pass x y z 

然後$ *將x y z

我假設你沒有提供任何參數,所以$*是空白的,你的線實際上解釋爲只是

read 

如果您在致電read時未提供變量名稱,則回覆將存儲在特殊變量REPLY中,因此如果您使用的是

if [ "$REPLY" = "$p" ] 

標準的方式做你想要將

p="hello"    (note: no spaces, otherwise `p` is seen as a command to run) 
read response   (note: no `$` sign!) 
if [ "$response" = "$p" ] 
etc. 

希望有所幫助的。

相關問題