LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 847|回复: 5

数字计算问题

[复制链接]
发表于 2003-5-19 09:01:59 | 显示全部楼层 |阅读模式
我用shell编了一个求立方值的小程序.但是有错误,哪位帮我看看.
m=1
while test "$m" -le 9
do
  c= " expr $m \* $m  \* $m"
  echo $m  $c
  m= " expr $m + 1"
done
最后出错说明是这样的
cubic: line 8:  expr 1 + 1: command not found
cubic: line 6:  expr 1 \* 1  \* 1: command not found
1
我的分析是expr没有认出来,\的作用也没有发挥.
我都是按书上来得,搞了一晚上也不知道为什么.大家帮我找找原因.
谢谢
发表于 2003-5-19 09:44:28 | 显示全部楼层
修改后的,你看看;)
#!/bin/sh
m=1
while (($m<= 9))
do
c=$(expr $m \* $m \* $m)
echo $m $c
m=$(expr $m + 1)
done
expr用于计算,你的m="expr $m +1"有问题,用反引号``或者$()来进行命令替换.
 楼主| 发表于 2003-5-19 09:57:42 | 显示全部楼层
可以运行了,为什么用"不行呢?用$()又是什么意思呢?
i am a newbie,thank you
发表于 2003-5-19 10:06:55 | 显示全部楼层
这是命令替换的方法,如:
a=$(ls)   //将显示文件的输出赋值给变量a,
echo $a //引用变量$a,结果当然是列出文件名的内容
详细的介绍,看看书中关于参数和命令的替换与引用.
""是用与对字符串的的赋值,如:
a="jkjkjk"
echo $a 他的输出当然是jkjkjk,而不是你想要的计算命令的输出结果.
发表于 2003-5-20 17:00:23 | 显示全部楼层
c= " expr $m \* $m \* $m"

改成

c= `expr $m \* $m \* $m`

也行
 楼主| 发表于 2003-5-20 20:32:26 | 显示全部楼层
我知道为什么老是调不出来了,我把'和`混了.刚才看了前面的文章终于明白了.谢谢2位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表