Chinaunix首页 | 论坛 | 博客
  • 博客访问: 925717
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类: LINUX

2009-05-31 15:48:50

学了那么多语言,没见过这么垃圾的语法.
这就是linux下的脚本语言--bash.

一个脚本语言, 语法这么苛刻, 让人抓狂.
举例如下:
1:
定义变量时, =号的两边不可以留空格.
eg:
gender=femal------------right
gender =femal-----------wrong
gender= femal-----------wrong
2
条件测试语句 [ 符号的两边都要留空格.
eg:
if [ $gender = femal ]; then-------right.
     echo "you are femal";
fi

if[ $gender...-----------------------wrong
if [$gender...----------------------wrong.

3
条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格!
eg:
if [ $gender = femal ]; then-------right.
if [ $gender= femal ]; then--------wrong.
if [ $gender=femal ]; then---------wrong.

4
如果if 和 then写在同一行, 那么,注意, then的前面要跟上 ; 号.
如果 then 换行写, 那么也没问题.
eg:
if [ $gender = femal ]; then-------right.
if [ $gender = femal ]
     then-------------------------------right.
if [ $gender = femal ] then-------wrong. then前面少了 ; 号.
提示出错信息:
syntax error near unexpected token then
同理,还有很多出错信息 比如
syntax error near unexpected token fi 等都是这样引起的.

5
if 后面一定要跟上 then. 同理
elif 后面一定要跟上 then.
不然提示出错信息:
syntax error near unexpected token else

明明从书上抄下来的程序,死活执行不过去, 气死人了. 更气人的时, 净没有一本书提示 [ 符号的两边要留空格. 呜呼哀哉.以上是我的总结,希望对bash入门的哥们有用.

阅读(2193) | 评论(14) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-02 13:58:46

存在必定合理,楼主还是先仔细研究好shell的基础再抱怨吧。

chinaunix网友2009-06-02 10:28:49

呵呵 真好笑。。 gender=femal------------right gender =femal-----------wrong gender= femal-----------wrong

chinaunix网友2009-06-02 09:45:50

难道你不知道 [ 本身就是一个命令吗? 你到/usr/bin或者/bin下面看看好了 既然[是一个命令,你就不难理解为什么要用空格分隔了(命令的参数是以空格分开的) 你应该自己总结一下那些是bash内置的东西,比如if then; else之类的属于bash内置的 而[, test之类其实都是外置的命令,bash脚本只不过是调用了这些外置的命令而已(程序执行到这里的时候,会fork一个子shell,在子shell里面执行这些命令,然后将$?作为语句执行的结果

chunchengfh2009-06-01 09:45:49

bash的语法是由它的交互式使用方式决定的;如命令"cat a b", a于b之间的一个空格和多个空格是相同的,但是没有空格就不一样了; 此外,我估计bash对于'[' ']'之类的字符不像C语言一样当作关键字看待,因此'[' 和 ']' 两边都需要由空格隔开。 否则的话,命令“ echo hello] " 就要报错了 (: