同样的一个Shell编程错误

诸葛非卿 发布于 2014/04/18 23:52
阅读 176
收藏 0
#!/bin/sh
read getvar
a=1
add=0
while [ $a -le $getvar ]
do
add='expr $add+$a'
a='expr $a+1'
done
echo "add = $add"
~                                                                               
~                         

错误如下:./ts4  输入数字10
./ts4: 5: [: expr: unexpected operator
add = expr $add+$a
这个是什么原因呢?



加载中
0
森林羊
森林羊

add=$(expr $add + $a)

a=$(expr $a + 1)


0
gnefil.nil
gnefil.nil

add=`expr $add + $a`

a=`expr $a + 1`

` 不是 ',+前后要有空格

诸葛非卿
诸葛非卿
标点符号弄错了。`与 ‘ 这个没有区分清楚,谢谢了
0
toothpick
toothpick

2,3楼正解!

0
Feng_Yu
Feng_Yu

 开头的she-bang改为#!/bin/bash

因为ubuntu的sh软连接到dash,和bash的语法就不一样。

比如[]代表test,function func{},for (())这些语法是bash的,在dash不能运行。

0
诸葛非卿
诸葛非卿

引用来自“Feng_Yu”的评论

 开头的she-bang改为#!/bin/bash

因为ubuntu的sh软连接到dash,和bash的语法就不一样。

比如[]代表test,function func{},for (())这些语法是bash的,在dash不能运行。

兄台,你说的太正确了,我直接修改了之后就正常了,没有任何错误!
返回顶部
顶部