语法错误:尝试运行简单bash脚本的意外文件结尾

时间:2015-07-04 03:14:24

标签: bash cygwin eof

我真的看不出我的脚本是什么问题。我考虑过缺少引号或其他语法错误。必须有一些我想念的东西。这是一个非常简单的while循环脚本...

#!/bin/bash
c=1
while [ $c -le 5 ]
do
    echo "Welcone $c times"
    c=$(( c++ ))
done

我应该提一下,我在Windows 7上运行cygwin中的bash。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

变化:

c=$(( c++ ))

(( c=c+1 ))

当Bash看到:((var))它会尝试并做一些数学运算'关于内容...在这种情况下' c ++' ==空字符串==' 0&#39 ;; c总是等于' 1'由于第一次任命......

从我的Linux系统上的Bash手册页(您可能需要查看Cygwin的这个 - 可能会有所不同......):

((表达式)) 根据ARITHMETIC EVALUATION下面描述的规则评估表达式。如果表达式的值不为零,则返回状态为0;否则返回状态为1.这完全等同于让"表达"。

此外:

  id++ id--  
          variable post-increment and post-decrement  
  ++id --id  
          variable pre-increment and pre-decrement  

经过一点点测试后,预先增加'似乎在这里做你想做的事 - 注意你可能需要申报' c'作为整数:

typeset -i c=1
while [ $c -le 5 ]
do
    echo "Welcone $c times"
    c=++c
#    (( c=c+1 ))
done