Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1143265
  • 博文数量: 286
  • 博客积分: 3124
  • 博客等级: 中校
  • 技术积分: 5186
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-24 23:42
个人简介

Bomi

文章存档

2015年(1)

2013年(1)

2012年(281)

2008年(3)

分类: 系统运维

2012-02-05 00:48:26

Shell是一种特殊的程序,它是用户和UNIX体系结构的操作系统“心脏”之间的接口。它本身也是一个工具程序,在用户登陆系统后启动。它解释并运行由命令行或脚本文件输入的命令,从而实现用户与内核的交互。
    当用户登陆成功,系统会启动一个交互式的shell来提示用户输入指令。用户键入命令后,shell开始执行任务:先解析命令行,再处理通配符、重定向、管道和作业控制,然后查找命令,找到后开始执行。
    UNIX系统大都支持3种主流的shell,分别是:Bourne shell,C shell和Korn shell。交互式运行时,这三种shell很相似,但是作为脚本语言,他们在语法和效率上有一定的区别。由于篇幅有限,在这里我就不做过多解释了。
    shell的作用:
    1.读取输入并解释命令行
    2.使用保留字和替换特殊字符,如通配符和历史命令符
    3.设置管道、重定向和后台处理
    4.可处理程序命令
    5.维护一些变量和进行环境控制
    6.支持shell编程
   看到这里,我想各位读者也觉得shell是一个包含大量内容的技术,用一篇文章肯定说不完,那么这篇文章就作为一个开头,介绍一些概念性的东西,我会在随后的文章里继续撰写关于shell的内容。
   同样,Solaris也是UNIX体系结构的操作系统,也支持shell。那么我通过下面一个小例子来给大家一个直观的印象,看看什么是shell。当然,这只是shell的极小部分内容。
首先创建一个空白脚本文件:$touch check.sh
为该文件添加执行权限:    $chmod +x check.sh
用VI编辑该文件:           $vi check.sh
然后在文件里添加如下命令行:
#!/bin/bash
for i in aaa bbb ccc ddd eee
do
        FILENAME=$i".dat"
        echo "checking" $FILENAME
        if test -s $FILENAME
        then
                echo $FILENAME"has 0 length"
        else  
                echo $FILENAME "is OK"
        fi
done
$./check.sh
     整个程序的作用是:使用For循环产生一系列文件名(循环了5次),然后用test工具来检查这些文件名,以确定他们是否空文件。如果是就打印“XXX has 0 length”,否则就打印“XXX is OK”。
现在对该脚本逐行解释
1.告诉内核正在运行的是一个Bourne shell脚本
2.循环5次,分别用变量i取文件名aaa(第一次循环),bbb(第二次循环)……
3.执行
4.用FILENAME取带后缀“.dat”的文件名,如FILENAME=aaa.dat(第一次循环)
5.打印,例如输出“checking aaa.dat”
6.if语句,用test关键字去检测aaa.dat文件。
7和8.如果是空文件,就输出“aaa.dat has 0 length”
9和10.如果不是,则输出“aaa.dat is OK”
11.if结束
12.执行结束
以上是以第一个aaa.dat文件为例的,其他的道理也一样。

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