#!/bin/bash
# use for...do...done in the digit processing
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input a number,I will count for 1+2+3+...+number : " num
sum=0
for ( ( i=1; i<=$num; i=i+1 ) )
do
sum=$(($sum+$i))
done
echo "The result of '1+2+...+$num' is ==> $sum"
这是鸟哥书上的一个脚本,目的是利用for循环计算数字相加的和。但是为何总是提示我在for那一行的(左右有错误呢?
请大家帮忙。
心蓝波波 于 2011-08-30 20:12:36发表:
5# 相思爱文
恩恩。多谢指教!以后问问题尽量写全面些。关键是有些东西我还没有了解到,所以问得不全。例如我并不知道还有默认使用dash的,只是以为现在的distribution都是默认的bash。嘿嘿。还得向前辈们多多学习啊。
心蓝波波 于 2011-08-30 20:08:09发表:
2# wang4289273
确实是空格的问题。((、))以及¥(之间都不可以有空格!
hexiaodong80 于 2011-08-30 17:09:21发表:
就是( (中间有空格,所以.....
terrytsang 于 2011-08-30 14:20:50发表:
不好意思,学到的东西都还给老师了
相思爱文 于 2011-08-30 13:22:14发表:
[i=s] 本帖最后由 相思爱文 于 2011-8-30 13:23 编辑 [/i]
把系统环境,运行过程(在什么shell中,用什么命令等),以及出错信息等都贴出来。
如果是用sh命令运行,在debian中默认使用的是dash,而不是bash,是不能使用for循环的
hcc@live:~$ls -l /bin/sh
lrwxrwxrwx 1 root root 4 3月 1 09:18 /bin/sh -> dash
还有两个 ( (之间以及两个) ) 之间不是有空格。
应写成for (( i=1; i<=$num; i=i+1 ))
age 于 2011-08-29 23:04:52发表:
[i=s] 本帖最后由 age 于 2011-8-29 23:06 编辑 [/i]
话说bash里的加减运算真不是一般的麻烦
一个简单的sum+=i偏要弄得无比复杂
再比如浮点数运算, 竟然没有内置支持, 还需要调用bc
所以全面转向python, 更简洁高效
acrofox 于 2011-08-29 22:28:02发表:
两个 ( 之间以及两个 ) 之间不是有空格。
另外,如果你想省一点手指的力气的话, (( )) 中变量前的 $ 是可以不用的。
wang4289273 于 2011-08-29 22:04:54发表:
是不是有空格之类的没注意啊