2013-11-24 4 views
10

Я пишу сценарий в Баш и я получаю эту ошибку:Синтаксическая ошибка: операнд ожидаемой (лексема ошибка «+»)

./P4.1: line 10: +: syntax error: operand expected (error token is "+") 

И это мой код:

#!/bin/bash 
read string 
echo $string >| temp 
num1= cut -d" " -f1 temp 
num2= cut -d" " -f2 temp 
num3= cut -d" " -f3 temp 
while [ $num1 -gt $num3 ] 
do 
     echo $num1 
     num1=$[$num1+$num2] 
done 

Что случилось, и как я могу это исправить? Спасибо.

+0

Почему downvote? –

+0

Проверьте также часть '-gt', это должно быть' -lt'? –

ответ

7

Сочетание ceving и Томек-х:

#!/bin/bash 
read num1 num2 num3 
while [ $num1 -lt $num3 ] 
do 
    echo $num1 
    num1=$((num1+num2)) 
done 
+0

Да, строка, кажется, проблема –

+0

Мне нужно получить ввод как целую строку, а затем разделить ее. Почему вы используете $ (()) вместо $ [], как я был жестким? – shoham

+0

Ну, в любом случае это правильно. Вы можете делать то, что вы выберете. И это должно читать числа, и оно должно разделить их. Он считывает числа сразу, помеченные пробелами, и они уже разделены при чтении. –

0
#!/bin/bash 
read string 
echo "${string}" >| temp 
num1= cut -d" " -f1 temp 
num2= cut -d" " -f2 temp 
num3= cut -d" " -f3 temp 
while [ "${num1}" -gt "${num3}" ] 
do 
    echo "${num1}" 
    num1=$(expr "${num1}" + 1) 
done 

также цитируйте и скопируйте переменные. : D

+0

Произнесение ошибки в элементе "expr". – shoham

+0

Не следует. Я проверил это; меня устраивает. – petrus4

4

Используйте круглые скобки для числовых вычислений:

num1=$((num1 + num2)) 
+0

Та же проблема ... – shoham

Смежные вопросы