./fibonacci.sh: строка 11: синтаксическая ошибка рядом с неожиданным токеном `do'

Знаете ли вы, что не так с моим скриптом Фибоначчи, я всегда получаю сообщение об ошибке: ./fibonacci.sh: строка 11: синтаксическая ошибка рядом с неожиданным токеном `do'

#!/bin/bash
#fibonacci
echo "Geben Sie die n-te Fibonacci-Zahl ein:"
read n

if [$n -lt 2]; then
    echo $n
else
    array[0] = 0
    array[1] = 1
    for[k=2; $k -le $n; k++]; do
        x = $array[0] + $array[1]
        $array[0] = $array[1]
        $array[1] = $x
    done
    echo $array[1]
fi

Пожалуйста помоги!


person Bida    schedule 03.11.2012    source источник
comment
Привет и добро пожаловать в Stackoverflow. Поскольку вы новичок, вам следует ознакомиться с часто задаваемыми вопросами stackoverflow.com/faq.   -  person tuergeist    schedule 03.11.2012


Ответы (1)


У тебя было несколько ошибок внутри. Во-первых, неправильное использование массивов. используйте фигурные скобки, если вы их используете. См. здесь. Во-вторых, я переделал ваш код с помощью цикла while — его легче понять. В-третьих, bash не любит пробелы в присваиваниях.

#!/bin/bash
#fibonacci
echo "Geben Sie die n-te Fibonacci-Zahl ein:"
read n

if [ $n -lt 2 ]; then
    echo $n
else
    array[0]=0
    array[1]=1
    k=2
    while [ $k -le $n ]
    do
        let x=${array[0]}+${array[1]}
        array[0]=${array[1]}
        array[1]=$x
        let k=$k+1
    done
    echo ${array[1]}
fi

пример:

$ ./test.sh 
Geben Sie die n-te Fibonacci-Zahl ein:
6
8
person tuergeist    schedule 03.11.2012