2016-02-13 84 views
0

我想比較用戶輸入與字符串數組值,當我這樣做時,這兩個值似乎是相同的,當我打印出來,但if語句沒有看到他們作爲等於。有什麼明顯的我失蹤了。比較陣列值與用戶輸入bash

k=0 
while [ -z $arg1 ] 
do 
    while [ $k -ne 9 ] 
    do 
    # ask question 
    echo "${question[k]}" 
    answer="${answer[k]}" 
    read -p "YES/NO " arg1 
    # check answer 
    if [ '$arg1' = '$answer' ]; # problem is here 
    then 
     echo "Correct!" 
     let "k=$k+1" 
    else 
     echo "Incorrect!" 
     echo "Your answer: $arg1" 
     echo "Correct answer: $answer" 
    fi 
    done 
done 
+1

看起來你有一個數組'answer'您正在然後用一個變量覆蓋包含其中的一個元素。 –

+0

請看看:http://www.shellcheck.net/ – Cyrus

回答

0

替換:您還沒有放什麼東西是在回答問題和陣列

if [ '$arg1' = '$answer' ]; 
with 
if [ "$arg1" = "$answer" ] ; 

,並檢查

+0

已經嘗試過了,我也試過「$ arg1」==「$ answer」 – Jaskowaty

+0

改變你的陳述,答案=「$ {answer [k]}」 to answer_other =「$ {answer [k]}」並檢查if [「$ arg1」=「$ answer_other」]; – Varun

+0

沒有仍然不開心,雖然我可以看到你的意思,導致我使用相同的名稱爲數組和變量它冷得了「困惑」,以及我沒有改變它,它只是沒有意義 – Jaskowaty