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
答案1
在 shell 中声明变量时,必须周围不能有任何空格=
。
就您的情况而言,我们以一行为例:b= `expr $a % 10`
,您尝试将命令替换的输出保存`expr $a % 10`
在变量中b
;由于后面有一个空格b=
,因此您收到错误。对于所有后续情况也是如此。因此,删除后面的空格b=
。
附注:开始使用命令替换语法,$()
而不是旧的和弃用的语法` `
,以避免嵌套命令替换和奇怪的引用问题等问题:
b=$(expr $a % 10)
此外,除非您希望进行单词拆分和路径名扩展,否则您应该引用变量扩展。