Я получаю ошибки в этой программе для числа armstrong

echo "Enter the no" read a echo "The number is:" echo $a b= `expr $a % 10` c= `expr $a / 10` d= `expr $c % 10` e= `expr $d / 10` f= `expr $b \* $b \* $b + $d \* $d \* $d + $e \* $e \* $e` if [ $f -eq $a ];then echo "Armstrong No." else echo "Not an Armstrong No" fi

отображаются следующие ошибки:

PS:Input no. is 153 Armstrong.sh: line 5: 3: command not found Armstrong.sh: line 6: 15: command not found expr: syntax error expr: syntax error expr: non-numeric argument Armstrong.sh: line 10: [: -eq: unary operator expected
-2
задан 5 July 2017 в 07:58

2 ответа

При объявлении переменных в оболочке не должно быть пробелов вокруг =.

В вашем случае возьмем одну строку, например: b= `expr $a % 10`, которую вы пытаетесь сохранить вывод подстановки команды `expr $a % 10` в переменной b; поскольку после b= есть пробел, вы получаете ошибку. Это справедливо и для всех последующих случаев. Итак, оставьте пробелы после b=.

В качестве побочной заметки начните использовать синтаксис подстановки команд $() вместо старого и устаревшего ` `, чтобы избежать таких проблем, как замена команды вложенности и странные проблемы с цитированием:

b=$(expr $a % 10)

Кроме того, вы должны процитировать расширения переменных, если не ожидаете разрыва слова и расширения имени пути.

1
ответ дан 18 July 2018 в 10:42

При объявлении переменных в оболочке не должно быть пробелов вокруг =.

В вашем случае возьмем одну строку, например: b= `expr $a % 10`, которую вы пытаетесь сохранить вывод подстановки команды `expr $a % 10` в переменной b; поскольку после b= есть пробел, вы получаете ошибку. Это справедливо и для всех последующих случаев. Итак, оставьте пробелы после b=.

В качестве побочной заметки начните использовать синтаксис подстановки команд $() вместо старого и устаревшего ` `, чтобы избежать таких проблем, как замена команды вложенности и странные проблемы с цитированием:

b=$(expr $a % 10)

Кроме того, вы должны процитировать расширения переменных, если не ожидаете разрыва слова и расширения имени пути.

1
ответ дан 24 July 2018 в 19:38

Другие вопросы по тегам:

Похожие вопросы: