如题所述
第1个回答 2011-11-01
while [ “$i” != "100" ] 这句出错的本质是数据类型与运算符不匹配,不管你上不上双引号,在这里shell都把他俩当做数字对待了。数字间比较使用的是lt(lower than),le(lower or equal) ,eq (aqual) gt(greater than),ge(greater or equal), ne(not equal)这几个操作符,而==,!= 这两个操作符是用来比较两个字符串的,用它来操作两个数字,自然会出错
可以改成 while [ “$i” -gt 100 ]追问
可以改成 while [ “$i” -gt 100 ]追问
改成了现在的样子,还是报错,郁闷,纠结啊,帮忙看看吧,谢谢啦
第2个回答 2011-11-01
按照你的想法写的
#!/bin/bash
s=0
i=0
while [ $i != 100 ]
do
i=$[$i+1]
s=$[$i+$s]
done
echo $s
我的想法写的
#!/bin/bash
j=0
for ((i=1;i<=100;i++))
do
j=$[$i+$j]
done
echo $j
#!/bin/bash
s=0
i=0
while [ $i != 100 ]
do
i=$[$i+1]
s=$[$i+$s]
done
echo $s
我的想法写的
#!/bin/bash
j=0
for ((i=1;i<=100;i++))
do
j=$[$i+$j]
done
echo $j
第3个回答 2011-11-01
!= 是用来判断字符串的,
判断数字用 -ne追问
判断数字用 -ne追问
改成了现在的样子,还是不行,帮忙看一下吧
追答呵呵,你之前是C/C++程序员吧,代码规范还不错,可惜shell中不适用。
shell脚本中的变量赋值,=号两边不能有空格哦。
#!/bin/bash
s=0
i=0
while (( i != 100 ))
do
((i++))
s=$((i+s))
done
echo $s
谢谢夸奖啊,之前我是做php的,我有点不太明白了,不是说 “!=”是操作字符串的吗?这里怎么用来操作数值了?并且我把它改成 -ne 就会报错
追答这就要从括号讲起了。
(( ))是用于计算一个算术表达式的值。 里面就可以直接用 !=了
[ ] 和test, /usr/bin/test,/usr/bin/[一样,是等价命令。
整数比较
-eq 等于 if [ "$a" -eq "$b" ]
-ne 不等于 if [ "$a" -ne "$b" ]
-gt 大于 if [ "$a" -gt "$b" ]
-ge 大于等于 if [ "$a" -ge "$b" ]
-lt 小于 if [ "$a" -lt "$b" ]
大于(在双括号中使用) (("$a" > "$b"))
>= 大于等于(在双括号中使用) (("$a" >= "$b"))