LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 906|回复: 3

学习shell有感。

[复制链接]
发表于 2009-2-27 12:28:31 | 显示全部楼层 |阅读模式
这段时间学习shell,感觉脚本是不是都是相通的,以前写vbscript,现在是shell,很多东西都是雷同的,呵呵,不知道是不是,shell是不是也是用的c的语法,包括vi中的一些命令,也是用的c的语法吗?把shell弄的差不多了,是不是学c会轻松点,或者上手是否会容易一些捏?
发表于 2009-2-27 15:33:04 | 显示全部楼层
shell是个很宽泛的概念,任何绑定了常用操作系统调用的程序设计语言都能作为shell使用;因此,如果不比较交互性长短,能scripting的shell能有数十种,算上不同的实现估计能上数百种。不过几乎所有人概念里都是下面这个狭义的等式:
  1. shell == POSIX shell
复制代码

POSIX shell不是C的语法(这么说的出发角度是:两者的BNF文法不同)。如果你想寻找C语法相近的shell,那就csh(不过csh编程有害无益);如果你想寻找和C语法几乎一样的shell,我知道有两个选择:

  • Ch<http://www.softintegration.com/>是个嵌入式C/C++代码解释器,不过是私有软体;
  • CINT<http://root.cern.ch/drupal/content/cint>是使用X11/MIT许可证的FOSS,也支持C++语法。

看看Ch脚本的样子(wikipedia上的例子,在当前目录下重新编译所有更新过的C源程序,相当于make所做的事儿):
  1. #!/bin/ch
  2. #include <sys/stat.h>
  3. struct stat cstat, ostat;
  4. string_t c, o;
  5. foreach (c; `find . -name "*.c"`)
  6. {
  7.     o=`echo $c | sed 's/.c$/.o/'`;
  8.     stat(o, &ostat); stat(c, &cstat);
  9.     if (ostat.st_mtime > cstat.st_mtime)
  10.     {  
  11.         echo "compiling $c to $o";
  12.         gcc -c -o "$o" "$c";
  13.     }
  14. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-2-27 16:57:47 | 显示全部楼层
Post by spider_bug;1953533
这段时间学习shell,感觉脚本是不是都是相通的,以前写vbscript,现在是shell,很多东西都是雷同的,呵呵,不知道是不是,shell是不是也是用的c的语法,包括vi中的一些命令,也是用的c的语法吗?把shell弄的差不多了,是不是学c会轻松点,或者上手是否会容易一些捏?


如果深究语法的话,每个语言的语法都是不同的。

但如果从语言的角度来看,他们所做的事情并没有太大不同。

如果你学了法语西班牙语荷兰语拉丁语英语总归会发现他们或多或少有相同之处。中文跟英文的相同之处很少,但是语言研究到一定程度就会发现即使中文跟英文也是有相通之处的。

计算机的语言也就是你跟计算机对话的语言,他们可以有很多种,但是其根本的用途是基本一致的,这就决定了他们多少总有些相通之处,也就决定了当你学会了6种以上语言时会明白“其实什么语言都无所谓”。
回复 支持 反对

使用道具 举报

发表于 2009-2-28 19:02:47 | 显示全部楼层
听闻语言决定思想(即便是自然语言也是如此),LS怎么看?:Fear2:
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表