|
发表于 2009-2-27 15:33:04
|
显示全部楼层
shell是个很宽泛的概念,任何绑定了常用操作系统调用的程序设计语言都能作为shell使用;因此,如果不比较交互性长短,能scripting的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所做的事儿):- #!/bin/ch
- #include <sys/stat.h>
- struct stat cstat, ostat;
- string_t c, o;
- foreach (c; `find . -name "*.c"`)
- {
- o=`echo $c | sed 's/.c$/.o/'`;
- stat(o, &ostat); stat(c, &cstat);
- if (ostat.st_mtime > cstat.st_mtime)
- {
- echo "compiling $c to $o";
- gcc -c -o "$o" "$c";
- }
- }
复制代码 |
|