在看鸟哥私房菜的时候有个练习,是关于写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,请好心人帮帮忙
万分感谢!
shell脚本,declare的问题
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 9
- 注册时间: 2009-06-26 13:05
shell脚本,declare的问题
上次由 jinweng 在 2009-07-01 17:34,总共编辑 1 次。
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: shell脚本,declare的问题
bash test11-loop.sh
运行试试。
运行试试。
-
- 帖子: 9
- 注册时间: 2009-06-26 13:05
Re: shell脚本,declare的问题
问题搞定了,先谢谢大牛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,为什么取消默认后反而能识别了呢?
我查了一下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的问题
9.04默认的sh是dash吧,b和d很像,你肯定看错了。
-
- 帖子: 9
- 注册时间: 2009-06-26 13:05
Re: shell脚本,declare的问题
多谢xiooli
惭愧呀!
惭愧呀!