首页 > 代码库 > shell简介

shell简介

shell(外壳)是操作系统与用户进行交互的重要接口(shell也算是Linux的一个软件),我们输入命令时被shell接收,然后shell传送给内核执行,运行结束后,shell会把运行的结果返回给用户。shell程序有很多,如C Shell、Korn Shell、Bash等,作用类似,都是充当用户和系统的接口,只是在语法上稍有差别。Linux中默认使用的shell程序是Bash,可以在/etc/shells下查看系统支持哪些shell程序。


shell脚本的结构

1. shell脚本的后缀名必须是”.sh”,如test.sh

2. shell脚本的内容:

#!/bin/bash                //首行固定结构
##The first test shell script.    //描述信息1,可以描述这个脚本是用来干什么的
##Written by pzk.                 //描述信息2,可以描述这个脚本是何时由谁写的
                                  //空一格,下面写shell脚本的执行语句
ls/tmp    
echo"This is the first script."

 3. 执行shell脚本的方法

[root@root shell]# sh test.sh                             //执行shell脚本方法一
yum.log yum_save_tx-2016-04-06-17-02lW18Vj.yumtx
This is the first script.

[root@root shell]# bash test.sh                           //执行shell脚本方法二
yum.log yum_save_tx-2016-04-06-17-02lW18Vj.yumtx
This is the first script.                                 //sh跟bash是软连接的关系

[root@root shell]# chmod a+x test.sh                      //执行shell脚本方法三
[root@root shell]# ./test.sh                              //可以写成绝对路径,如/root/shell/test.sh
yum.log yum_save_tx-2016-04-06-17-02lW18Vj.yumtx
This is the first script.

[root@root shell]# sh -x test.sh                          //参数x可以查看执行过程,可以进行排错
+ ls /tmp
yum.log yum_save_tx-2016-04-06-17-02lW18Vj.yumtx
+ echo ‘This is the first script.‘
This is the first script.

 

为什么shell脚本的首行要固定为“#!/bin/bash“

这样做的目的是告诉系统一定要使用所指定的Shell程序/bin/bash来执行这个脚本文件。也就是说,你的脚本给别人执行时,如果他当前所使用的Shell是/bin/csh,当他执行脚本的时候系统仍会让/bin/bash来解释并执行这个脚本,因而会出现Shell语法不兼容而产生错误。除此之外,在脚本文件的头部指定Shell程序对开发人员也很有意义,因为他们只要看一下脚本的开头,就可以知道这是用哪种Shell开发的脚本。
注意:只有把”#!/bin/bash”添加到脚本文件中第一行的起始位置才会起作用,在其他任何位置添加都只会被当做注释。

[root@root ~]# file tesh.sh    //不加“#!/bin/bash“的文件类型
tesh.sh: ASCII text

[root@root ~]# file tesh.sh    //加上“#!/bin/bash“的文件类型
tesh.sh: Bourne-Again shell script text executable

 

  

 

shell简介