shell script

xiaoxiao2021-02-28  37

1.概念

       所谓shell script (即shell脚本),就是将一些有逻辑关系的命令按照一定格式写在一个文本中,执行这个文本相当于执行文本中的所有命令。它可以一次性执行一批文件,类似于Windows/Dos下的批处理功能,方便了管理员进行的设置和管理,从而工作效率得到提高。

2.脚本的格式

     脚本文件的扩展名一般为sh(代表shell),如test.sh。但是扩展名并不影响程序的执行,扩展名不为sh,但具有可执行权限的文件亦可以执行,但为了标准化和方便管理,一般shell脚本文件文件名都以.sh结尾。

     脚本文件第一行一般写 #!/bin/bash ,其中#!为一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。linux中的shell解释器还有sh,csh,它们都存放在/bin目录中。其实脚本第一行不指定解释器默认为bash,若#!后面指定的不是系统解释器,这样的话就要在执行命令的时候在脚本文件的绝对路径前指定。例如:

    

    

3.脚本中常用的参数,符号

   (1)变量

            环境变量:只用在该shell环境中,退出该shell重新打开进入则已变量不存在

            用户变量:只用在某一特定用户中,一般声明在.bashrc文件中(从用户家目录进入)

            系统变量:适用于该系统各种环境,一般声明在/etc/bashrc文件中

    (2)算术运算符

            ++(加1)  ,   --(减1)  ,  +  ,  -  ,  *  ,  /  ,  %(取余)  ,  **(幂运算)  ,  +=(加等)  ,  -=(减等)   。

            用$[ ]表示数学运算 

     (3)位置参数

            指定的位置参数总数:$#             位置参数自身:$0、$1、$2、$3....             所有位置参数: $@、$*                      

      (4)退出状态

           0 – 在指定的文件中找到了模式            1 – 在指定的文件中未找到模式            >1 – 一些其他错误(无法打开文件、错误的搜索表达式等)

           退出状态存在“?”中,可用命令:echo  $?  查看

      (5)比较运算符

          字符串比较运算符:=、!=

          数字比较运算符:-eq(等于)、-ne(不等于)、-lt(小于)、-le(小于等于)、-gt(大于)、-ge(大于等于)

4.一些简单的示例(做实验脚本写在/mnt目录中)

   (1)简单的输出实验

    

    

     **注意**:脚本文件要给可执行权限,否则不能执行;执行命令时要给脚本文件的绝对路径,否则不能执行

   (2)将/etc下以.conf结尾的文件备份到/mnt/etconfig/中,并在备份文件夹名后加上时间戳,格式为:年-月-日-秒

    

   (3)实现一个1分10秒的倒计时

   

    **脚本调试:显示脚本每一步执行的命令以及执行完的输出结果,可在命令中脚本文件的绝对路径前加sh -x

   

   (4)将数据库中有用的库备份

           首先下载数据库相关服务软件:yum groups install mariadb,打开服务,创建两个数据库(westos和redhat),内建linux表,随意写入数据备用。然后编写如下脚本:

   

  (5)根据用户给出的网卡给出相应IP地址(提示列出用户要输入的网卡)

  

  (6)如果命令后面没加IP,提示用户加上IP,如果加了,就PING这个IP,并将PING的结果告诉用户(PING通或没PING通)

  

   (7)编写一个脚本script.sh,实现如下要求:

             script.sh  /mnt/userfile   /passfile,以userfile中的字符串为用户名,passfile中的字符串为密码建立用户

             要建立的用户存在时,不做任何处理

             脚本后文件个数少于两个时,提示please give me userfile or passfile

             当所给文件行数不一致时提示userfile's line is different from passfile's line

    脚本:

   

    运行成功后:

   

    文件行数不相等时:

   

    指定文件个数小于两个时:

   

   (8)写一个脚本ctrl_user.sh,运行时在脚本后加参数实现对用户的控制:

            不加参数或参数数量不够时时,提示用户,加上参数create或delete,及用户名文件userfile

            加create参数时,如果userfile中的用户存在,则提示用户该用户已存在,否则创建该用户并设密码为westos

            加delete参数时,如果userfile中的用户不存在,则提示用户该用户不存在,否则删除该用户

      脚本如下:

[root@desktop5 mnt]# vim ctrl_user.sh #!/bin/bash while [ "$#" -lt "2" ]         do         echo "Give me a parameter like :create,delete,and a userfile! "         exit 1         done if [ "$1" = "create" ] then         for USER in `cat $2`         do         NAME=`getent passwd $USER`         if         [ -z "$NAME" ]         then                 useradd $USER                 echo westos | passwd --stdin $USER         else                 echo "The user $USER is exist!"         fi         done fi if [ "$1" = "delete" ] then         for USER in `cat $2`         do         NAME=`getent passwd $USER`         if         [ -n "$NAME" ]         then                 userdel -r $USER &>/dev/null         else                 echo "The user $USER is nor exist!"         fi         done fi

     

      

      

     

转载请注明原文地址: https://www.6miu.com/read-193932.html

最新回复(0)