【求助】for 用法的困惑

【求助】for 用法的困惑

for ((i=1;i<=10;i++))
do
   echo "num is $i"
done


这个script如何理解?希望跟贴者能把具体实现讲清楚,而不是只讲其结果。^_^

当然最好能够按照<<learning the bash shell >>中shell对commmand line的处理流程进行分析。

同时也希望有人可以把该流程第一步和第二步给我说说,我理解的不够好。      
有啥不明白的吗?跟 C 语言中的 for 语句差不多呀      
复制内容到剪贴板
代码:
       for (( expr1 ; expr2 ; expr3 )) ; do list ; done
              First, the arithmetic expression expr1 is evaluated according to
              the rules described  below  under  ARITHMETIC  EVALUATION.   The
              arithmetic  expression  expr2 is then evaluated repeatedly until
              it evaluates to zero.  Each time expr2 evaluates to  a  non-zero
              value,  list  is executed and the arithmetic expression expr3 is
              evaluated.  If any expression is omitted, it behaves  as  if  it
              evaluates to 1.  The return value is the exit status of the last
              command in list that is executed, or false if any of the expres-
              sions is invalid.
      
谢谢dearvoid,这好象是在man bash中的吧,我有空也去看看。

   The arithmetic  expression  expr2 is then evaluated repeatedly until it evaluates to zero

     Each time expr2 evalutaes to a non-zero value,list is executed and the airthmetic      expression expr3 is evaluated.

    这里为什么是non-zero 时,就loop,这似乎与 shell 其他的时候不一致,一般情况下如果一个表达式正确时,返回的值应该是0。而这里如果表达式正确的话,返回的值是1?      
arithmetic expression 的返回值跟普通 command 的返回值有点儿区别. 对于一个算术表达式, 如果其值非 0, bash 将其看做 true, 如果其值为 0, bash 将其看做 false. 举例说明:
复制内容到剪贴板
代码:
$ echo $(( 2 < 3 ))  # 结果为 1, 这是算术表达式本身的值, 因为算术中是用 1 来表示 true 的
$ (( 2 < 3 ))
$ echo $? # 结果为 0, 这是算术表达式作为一个 command 的返回值, 因为在 bash 中是用 0 表示 true 的
      
原来是这样,谢谢你了,dearvoid,你每次都这么热心。^_^      
i'm glad to hear that. thx       
我想要一本<<learning the bash shell >>的电子书有哪位能也小弟发一下啊,,
E-MAIL:redhatzj@sohu.com
QQ:105684432