shell脚本,declare的问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
jinweng
帖子: 9
注册时间: 2009-06-26 13:05

shell脚本,declare的问题

#1

帖子 jinweng » 2009-07-01 17:13

在看鸟哥私房菜的时候有个练习,是关于写shell脚本的,用到了申明变量declare指令,我如果把他直接写在终端下,就是正确的。但用vi写成脚本就有错。
这是脚本源代码:
declare -i s=0
for (( i=1; i<=100; i=i+1 ))
do
s=s+i
done
echo "The count is ==> $s"
这是当sh test11-loop.sh,运行脚本时的错误信息:
test11-loop.sh: 5: declare: not found
test11-loop.sh: 6: Syntax error: Bad for loop variable

本人是超级菜鸟,初学Linux,请好心人帮帮忙
万分感谢! :em01
上次由 jinweng 在 2009-07-01 17:34,总共编辑 1 次。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: shell脚本,declare的问题

#2

帖子 xiooli » 2009-07-01 17:25

bash test11-loop.sh
运行试试。
jinweng
帖子: 9
注册时间: 2009-06-26 13:05

Re: shell脚本,declare的问题

#3

帖子 jinweng » 2009-07-01 17:48

问题搞定了,先谢谢大牛xiooli

我查了一下sh与bash.
google上说sh是bash的一个子集,这我就理解了,sh识别不了declare。

可是这(viewtopic.php?f=21&t=20868)里说,9.04默认sh就是bash,可以取消默认(sudo dpkg-reconfigure dash),我也试了,选择no后就能识别declare了,所以我更信这种说法,可我就更奇怪了,既然默认的sh是bash都不能识别declare,为什么取消默认后反而能识别了呢?
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: shell脚本,declare的问题

#4

帖子 xiooli » 2009-07-01 21:49

9.04默认的sh是dash吧,b和d很像,你肯定看错了。 :em04
jinweng
帖子: 9
注册时间: 2009-06-26 13:05

Re: shell脚本,declare的问题

#5

帖子 jinweng » 2009-07-02 8:41

多谢xiooli
惭愧呀! :em19
回复