简单介绍linux中的shell脚本

一、shell基本介绍

    Shell就是一个命令行解释器它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式。

    Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本是需要解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。作为程序设计语言,它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

    Linux的Shell种类众多,不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。所以本文主要介绍bash。

二、 shell脚本

    查看当前的默认shell

 [root@centos6 ~]# echo $SHELL

image.png

    查询当前系统一共有哪些shell

 [root@centos6 ~]# cat /etc/shells

image.png 

三、 shell执行脚本

     1、shell脚本简介

     打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件chen.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好了。

image.png

     进入一个空白的文件编辑器,输入一些代码,第一行一般是这样:

  #!/bin/bash

image.png

     shell脚本第一行必须以#!开头,表示该脚本使用后面的解释器解释执行。#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,使用哪一种Shell。

     2、自动创建文本

     所有的脚本在编辑的时候都有标准格式,每次需要新建脚本文件时都需要添加标准格式,浪费时间。所以需要创建一个脚本文件,该脚本文件的作用是:在需要新建脚本文件时,直接使用’绝对路径/该脚本文件名+新建脚本文件名.sh‘ 进行编辑,打开文本编辑器。

     (1)首先介绍能够自动创建文本的脚本文件,在root/bin/下创建一个 名为createsh.sh的脚本文件。

image.png

     打开文本编辑器后输入以下内容;

#!/bin/bash                    
echo "#!/bin/bash" >$1          # echo 命令用于向窗口输出文本
echo "#--------------------------" >>$1       #‘ #’开头的部分为注释内容并把内容追加'>>'到$1
echo "#Filename:$1" >>$1             # 以下内容标记具体内容并追加到$1文件
echo "#Revision:1.0" >>$1               
echo "#Date:$(date +"%F")" >>$1           
echo "#Author:wang" >>$1
echo "#Email:[email protected]" >>$1
echo "#Website:www.magedu.com" >>$1
echo "#Description:" >>$1
echo "#--------------------------" >>$1
echo "" >>$1
chmod +x $1         #使$1文件具有执行权限
vim + $1           #自动生成并执行$1

image.png

    (2)新建名为chen.sh 的脚本文件 ,执行‘/root/bin/createsh.sh chen.sh ’命令直接进入编辑。

image.png

     进入文本编辑器,里面已经含有/root/bin/createsh.sh中的内容。

image.png

四、变量

   变量分为局部变量和环境变量。

    局部变量:仅对当前shell有效,子shell不继承。

    环境变量:也叫全局变量,对当前shell和子shell均有效。

    1、局部变量

   局部变量仅对当前shell有效,子shell不继承!可通过set命令查看所有的局部变量。

[root@centos ~]# a=666      
[root@centos ~]# echo $$   #查看当前shell号 为3058
3058
[root@centos ~]# echo $a   
666
[root@centos ~]# bash      #进入子shell
[root@centos ~]# echo $$    #查看当前shell号 为3123
3123
[root@centos ~]# echo $a
                            #不再显示666
[root@centos ~]#

image.png

    2、环境变量

    环境变量:也叫全局变量,对当前shell和子shell均有效。env 查看所有的环境变量。

   export 局部变量名
   export 变量名=值

[root@centos ~]# export name="chen"
[root@centos ~]# echo $name
chen
[root@centos ~]# echo $$       #查看当前shell号 为3123
3123
[root@centos ~]# bash           #进入子shell
[root@centos ~]# echo $$        #查看当前shell号 为3711
3711
[root@centos ~]# echo $name
chen
[root@centos ~]# bash             #再次进入子shell,可理解为孙shell
[root@centos ~]# echo $$          #查看当前shell号 为3721
3721
[root@centos ~]# echo $name
chen

     通过  xport 变量名=值 设置环境变量,在当前shell有效(echo $$ 可以查看当前shell号),bash进入子shell,变量依然有效。

image.png

      3、 unset 取消变量

image.png

猜你喜欢

转载自blog.51cto.com/13869720/2151468