当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 求助:如何正确使用函数function?<已解决>
帖子发表于 : 2009-03-13 15:24 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
本人为新手,对计算机语言也不理解。
最近学看《鸟哥私房菜》学LINUX,(虚拟机装UBUNTU8.10)
学到鸟哥的Shell scripts练习,他有个简单的例子:输入one.two.three.然后在屏幕显示,我是这样写的

#!/bin/sbin
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

function printit(){
echo -n "You choice is"
}

echo "Please input one.two or three."
case $1 in
"one")
printit ; echo $1 | tr 'a-z' 'A-Z'
;;
"two")
printit ; echo $1 | tr 'a-z' 'A-Z'
;;
"three")
printit ; echo $1 | tr 'a-z' 'A-Z'
;;
*)
echo "You must choice {one|two|three}"
;;
esac
运行时总出现:5: Syntax error: "(" unexpected (function上面有一行是空的)
也就是function这行出了问题。但这个已经和鸟哥写的一模一样了,所以实在是搞不明白问题出在哪里?还请各位不吝赐教~~~~


最后由 fmshmi 编辑于 2009-03-13 18:11,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 16:32 
头像

注册: 2007-11-29 17:31
帖子: 451
送出感谢: 0 次
接收感谢: 0 次
不知道上面那几行为什么那么写
一般都是#!/bin/bash,像下面这样:
代码:
#!/bin/bash

function printit(){
echo -n "You choice is"
}

echo "Please input one.two or three."
case $1 in
    "one")
    printit ; echo $1 | tr 'a-z' 'A-Z'
    ;;
    "two")
    printit ; echo $1 | tr 'a-z' 'A-Z'
    ;;
    "three")
    printit ; echo $1 | tr 'a-z' 'A-Z'
    ;;
    *)
    echo "You must choice {one|two|three}"
    ;;
esac


这样在我这里是正确的,运行没问题

PS:移到shell版比较合适


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 17:18 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
非常感谢楼上的。
/bin/sbin是我太马虎了
我想复制代码过去,可是竟然不能全部复制~~汗~~,我自己补全。
但是运行后还是有同样问题:Syntax error: "(" unexpected. printit(){到后面的部分都是复制楼上过去的,但还是显示那个左括号有问题。
另外,本来我想man function,却没有function的手册~~汗~~
是不UBUNTU有点不同造成的?因为我发现鸟哥例子里用==是UBUNTU就不行,后来我换=才可以.
再次感谢:
2 楼 liupingjing !!!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 17:33 
头像

注册: 2007-11-29 17:31
帖子: 451
送出感谢: 0 次
接收感谢: 0 次
fmshmi 写道:
非常感谢楼上的。
/bin/sbin是我太马虎了
我想复制代码过去,可是竟然不能全部复制~~汗~~,我自己补全。
但是运行后还是有同样问题:Syntax error: "(" unexpected. printit(){到后面的部分都是复制楼上过去的,但还是显示那个左括号有问题。
另外,本来我想man function,却没有function的手册~~汗~~
是不UBUNTU有点不同造成的?因为我发现鸟哥例子里用==是UBUNTU就不行,后来我换=才可以.
再次感谢:
2 楼 liupingjing !!!

那就奇怪了,我的是ubuntu8.04,不过我觉得应该没区别的,我这里的代码和运行结果如下图:

对了,执行的时候用 ./XX.sh或bash ./XX.sh,最好再检查一下字母的全角半角


附件:
shell_function.jpg
shell_function.jpg [ 61.61 KiB | 被浏览 107 次 ]

页首
 用户资料  
 
5 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 17:40 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
难道是我用VIM编辑器的问题?·~~~


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 17:42 
头像

注册: 2007-11-29 17:31
帖子: 451
送出感谢: 0 次
接收感谢: 0 次
fmshmi 写道:
难道是我用VIM编辑器的问题?·~~~

用的都是vim,最有可能是字母全角的原因,你检查一下,确保全部都是半角,或者你直接把二楼的代码全部复制试试


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 17:58 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
全半角怎么换???~~汗


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 18:01 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
是不是CTRL+空格的那个?


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 求助:如何正确使用函数function?
帖子发表于 : 2009-03-13 18:07 

注册: 2009-03-13 14:57
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
百度了一下
然后用SHIT+空格,CTRL+.
现在可以了,
问题解决!!!
非常感谢!!!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译