红联Linux门户
Linux帮助

bash shell 中for循环的问题

发布时间:2011-08-29 19:52:42来源:红联作者:心蓝波波
#!/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那一行的(左右有错误呢?
请大家帮忙。
文章评论

共有 8 条评论

  1. 心蓝波波 于 2011-08-30 20:12:36发表:

    5# 相思爱文


    恩恩。多谢指教!以后问问题尽量写全面些。关键是有些东西我还没有了解到,所以问得不全。例如我并不知道还有默认使用dash的,只是以为现在的distribution都是默认的bash。嘿嘿。还得向前辈们多多学习啊。

  2. 心蓝波波 于 2011-08-30 20:08:09发表:

    2# wang4289273


    确实是空格的问题。((、))以及¥(之间都不可以有空格!

  3. hexiaodong80 于 2011-08-30 17:09:21发表:

    就是( (中间有空格,所以.....

  4. terrytsang 于 2011-08-30 14:20:50发表:

    不好意思,学到的东西都还给老师了

  5. 相思爱文 于 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 ))

  6. age 于 2011-08-29 23:04:52发表:

    [i=s] 本帖最后由 age 于 2011-8-29 23:06 编辑 [/i]

    话说bash里的加减运算真不是一般的麻烦
    一个简单的sum+=i偏要弄得无比复杂
    再比如浮点数运算, 竟然没有内置支持, 还需要调用bc
    所以全面转向python, 更简洁高效

  7. acrofox 于 2011-08-29 22:28:02发表:

    两个 ( 之间以及两个 ) 之间不是有空格。
    另外,如果你想省一点手指的力气的话, (( )) 中变量前的 $ 是可以不用的。

  8. wang4289273 于 2011-08-29 22:04:54发表:

    是不是有空格之类的没注意啊