2017-01-31 3 views
0
echo "Enter the value" 

read x 

echo "Enter the value of power" 

read n 

sum=1 

i=1 

while [ $i -le $n ] 

do 

sum=`expr $sum \* $x` 

i=`expr $i + 1` 

done 

echo "The value of $x power $n is $sum" 

В некоторых системах его работы. Но в моей лаборатории в некоторых системах он показывает ошибку следующие две строкиКакая ошибка в коде кода оболочки?

7b.sh:7: [:expr : unexpected oprerator 

значение 2 мощности 3 является выражение $ сумма * $ х я пытался, но никакого результата

+2

Очевидное, что нужно сделать, это изолировать разницу между системой, в которой она работает, и тем, где она терпит неудачу. –

+0

В дополнение к @NoufalIbrahim: Это может быть разница между zsh, bash, ... –

ответ

0

, если вы сделаете это изменение :

while [ $i -le $n ] 

do 

sum=$(expr $sum \* $x) 

i=$(expr $i + 1) 

done 
+1

Добро пожаловать в Stack Overflow! Хотя этот фрагмент кода может решить этот вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. [Из обзора] (https://stackoverflow.com/review/low-quality-posts/15056097) – Ferrybig

+0

@Skadia: Пользователь не указал, какую оболочку он использует. Из сообщения об ошибке это может быть оболочка Posix или - менее вероятно - оболочка Bourne. Если бы это была оболочка Bourne, ваша замена процесса не сработала. Если это оболочка Posix, замена процесса не требуется. Простой 'sum = $ (($ sum * $ x))' будет достаточно. – user1934428

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