這裏有幾個大的問題。
空白的分配。一個問題是,這些行:
temp= $number1
temp= $index
需要是這樣,而不是:
temp=$number1
temp=$index
這是因爲Bash中,這樣的事情:
varname=value command
運行命令command
環境變量varname
設置爲value
。在你的情況下,這樣的:
temp= $number1
試圖可變temp
組運行命令$number1
與環境爲空字符串。
重用臨時變量。另一個問題是,這條線:
temp=$number1
運行在每一次通過循環;因此,即使temp
先前已設定爲適當的數組索引,上述將丟棄該值並與用戶已經輸入的號碼替換它。真的,你應該刪除這條線,並在需要時直接使用$number1
。
變量名不匹配。另一個問題是,這條線:
for i in `seq 1 $N`
i
使用用於循環變量,但這些行:
if [ temp -eq ${array[$index]} ]
then
temp= $index
使用index
。不用說,這些需要匹配。
未膨脹變量。這條線:
if [ temp -eq ${array[$i]} ]
被可靠地意思是這樣的:
if [ $temp -eq ${array[$i]} ]
(擴大可變$temp
而不是使用串'temp'
);但在上述的光,它現在應該:
if [ $number1 -eq ${array[$i]} ]
陣列索引。數組索引從零開始;所以如果N是陣列中元素的數量,那麼你需要從0迭代到N -1。所以,這樣的:
for i in `seq 1 $N`
需求是這樣的:
for i in `seq 0 $((N - 1))`
雖然我真的認爲你應該得到完全擺脫N
,並使用${#array[@]}
(這是一個bash的符號,意思是「元素的數量在array
)代替:
for i in `seq 0 $((${#array[@]} - 1))`
是什麼'$ N'包含 – 2012-03-18 12:19:48
插入'設置-eu'在代碼的頂部,看看你得到一些錯誤消息。這也會在其他許多情況下幫助你。 – 2012-03-18 12:21:29
$ N是數組的長度。我尋找輸入號碼是否存在於陣列中的與否 – simplycurious 2012-03-18 12:24:54