shell script

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

     

      

      

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值