Здесь есть несколько больших проблем.
Пробел в задании. Одна проблема заключается в том, что эти строки:
temp= $number1
temp= $index
нужно быть, как это вместо:
temp=$number1
temp=$index
Это происходит потому, что в Bash, что-то вроде этого:
varname=value command
запускает команду command
с переменной окружения varname
установлена в value
. В вашем случае, это:
temp= $number1
пытается выполнить команду $number1
с переменным окружением temp
набора в пустую строку.
Повторное использование временной переменной. Другая проблема заключается в том, что эту линию:
temp=$number1
выполняется на каждом проходе цикла; поэтому даже если temp
ранее был установлен в соответствующий индекс массива, вышеуказанное отклонит это значение и заменит его номером, который был введен пользователем. Действительно, вы должны просто удалить эту строку и использовать $number1
непосредственно, когда вам это нужно.
Несоответствие переменных имен. Другая проблема заключается в том, что эта линия:
for i in `seq 1 $N`
использует i
для переменного цикла, но эти строки:
if [ temp -eq ${array[$index]} ]
then
temp= $index
использование index
. Излишне говорить, что они должны соответствовать.
Unexpanded variable. Эта линия:
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' содержит –
Вставить' установить -eu' в верхней части кода и посмотреть, если вы получаете некоторые сообщения об ошибках. Это поможет вам и во многих других ситуациях. –
$ N - длина массива. Я ищу, присутствует ли в массиве число входных или не – simplycurious