我真的看不出我的脚本是什么问题。我考虑过缺少引号或其他语法错误。必须有一些我想念的东西。这是一个非常简单的while循环脚本...
#!/bin/bash
c=1
while [ $c -le 5 ]
do
echo "Welcone $c times"
c=$(( c++ ))
done
我应该提一下,我在Windows 7上运行cygwin中的bash。
感谢您的帮助
答案 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