zoukankan      html  css  js  c++  java
  • shell脚本博客02详解

    Shell脚本02 详解

    一,总结shell脚本用法

          1,两种命令激活脚本

               (1): sh

               (2): /bin/bash

          2,创建目录,在这个目录里创建shell脚本

                 Mkdir –p /service/script

          3,以绝对路径来激活

             在/service/script目录下创建一个ctw.sh文件

             首先给ctw.sh 加X权限 chmod +x ctw.sh

             再用/service/script/ctw.sh 来激活脚本

          4,vim ctw.sh文件后内输入

              (1) #!/bin/bash

                       Useradd test1                :添加一个test1用户

                       Passwd echo “123456” | passwd –stdin test1

                       :给新添加的用户 test1设置密码 123456

               (2)怎么查看我新添加的用户呢?

                        Tail /etc/passwd  查看新添加的用户 

    (tail尾部动态信息)

                        Tail /etc/shadow 查看密码设置

    5,test 这个命令可以判断是目录还是文件

         #:test –d /root          

           :没反应                    

         #:echo $?                :→→→→查看上级是否成功

         # :0                          :→→→→0是成功 1是失败

                                             -d 是判断root是不是目录

                                           -f 是判断是不是文件

                                           -e判断目标是否存在

                                           -z 判断字符串是否是空

    6,[ ] 中括号是开启判断条件。

         #:xx=44

         #: [ $xx == 44 ] $$ echo “0” || echo “1”

         判断中括号内xx是否等于44。$$(与)是就输出“0”否则输出1

    7,应用在[] 中括号内的基本符号

         -gt 大于  -ge大于等于  ==等于  -lt小于  -le小于等于

         -ne不等于   -eq等于   !=不等于   -a 并且

         || 逻辑或(否则)      $$逻辑与

         Set nu 显示行号 (在vim中末尾使用)

    二,交互输入

         1, read 让用户输入数据

           如:vim ctw.sh

               #!/bin/bash

               Read –p “请用户输入一个数字”

          2, 符号解释

                #: vim ctw.sh        →→→→  #:/service/script/ctw.sh 99 88

                #!/bin/bash

                 echo $#               →→→→   2  :$#参数数量有99和88两个参数        

                 echo $*                →→→→ 99 88 :$*罗列所有参数横排

                 echo $0                →→→→ /service/script/ctw.sh  $0:路径

                                                    取得脚本的本行路径

                 echo $1                 →→→→ 99 :参数1      

                 echo $2                 →→→→ 88 :参数2

    3,求变量的位数

         #:xx=“123”                       #:xx=“123456”

         #:echo ${#xx} 回车               #:echo ${#xx} 回车 

           : 3                                         : 6

    4,条件判断      单分支条件判断语句

          (1)  If (如果)   条件1(成立);then (那么)

                                       echo(动作1)

                     fi (结束)           有开始必须有结尾

           (2)exit 强制终止    elif 否则如果  -e识别\n换行符

            (3)#!/bin/bash

                     Read –p “请用户输入一个数字:  ”

                     If [ $ctw –eq 60 ];then

                                 Echo “及格”

                     Elif [ $ctw –lt 60 ];then

                                 Echo “不及格”

                     Elif [ $ctw –le 80 ];then

                                 Echo “良”

                     Elif [ $ctw –lt 100 ];then

                                 Echo “优”

                     Elif [ $ctw –eq 100 ];then

                                 Echo “优秀”

                     Else

                                 Echo “作弊”

                      Fi

    (4)搭建yum仓库

            #!/bin/bash

            Umount /dev/sro               先卸载光盘(有没有都先卸)

            [ -d /media/cdrom ] || mkdir –p /media/cdrom

            查看有没有这个目录,没有就建一个

            Mount /dev/sro /media/cdrom   挂载光盘

            If [ $? -ne 0 ];then

                        Echo “请插入光盘”

                        Exit                        强制终止

            Fi

            [ -d /etc/yum.repos.d ] || mkdir –p /etc/yum.repos.d

            Cd /etc/yum.repos.d

            Mv * /tmp/

            cat > /etc/yum.repos.d/yum.repo <<FOF

            [local]

            name=local

            baseurl=file:///media/cdrom

            gpgcheck=0

            enabled=1

            FOF

            yum -y clean all

            yum makecache

            [ $? -eq 0 ] && echo "yum仓库搭建完毕" || echo ”缓存建立失败”

    三, for和while 两种循环语句

           1, for 的三种取值

          (1)#!/bin/bash

                  For I in 1 3 5 7 9                  in 取值范围

                  Do                                       I 被符的值,1 3 5 7 9

                       d

             #: sh ctw.sh

                1

                3

                5

                7

                9

    (2)for I in {1..10}              #: sh ctw.sh

            Do                                  1   

                 Echo $I                      2

            Done                               :

                                                  10

    (3)for I in `ls /root | xargs`

            Do

                     Echo $I

            Done  (结束)

    2,还有两种写法但不属于正则的shell语言

    (1)c 语言的循环

            (()) 两个括号代表启动c语言

      For ((i=0; i<10; i++))      

      Do

                   Echo $i

    Done

    (2) #!/bin/bash

              H=0

              For I in {1..10}

              Do

                        Echo $h

                        ((H++)) 或  let H++

              Done

    (3)例题

             找出哪个网段是活的?

    #!/bin/bash

    For ip in 192.168.200.{1..254}

    Do

                 Ping –c 1 $ip                   :ping网段 –c 1 只ping一次

                  If [ $? –eq 0 ] ;then

                              Echo “$ip活的”

                  Fi

    Done

    3.while 循环

    #!/bin/bash

    Read –p “输入  “  I      :让用户输入I是几

    While [ $I –lt 10 ]

    Do

               Echo $I

               Let I++

    Done

    四, case

           Case完全可以用if来代表只是特殊请款下,写一个菜单或启动的服务脚本,用case是最合适的,看起来清晰简单。

    #: vim ctw.sh

    #!/bin/bash

    Case  $1 in

                     Start)

                              Echo “开始服务”

                               ;;

                     Stop)

                              Echo “服务准备停止”

                               ;;

                 Restart)

                              Echo “服务准备停止”

      Echo “服务开始启动”

    ;;

                               *)

                                  Echo “请输入正确参数”

    Esac  (总结尾)

    详细解释:  $1 是变量也是参数1

                        In是取值 但在case里是对比 

                        怎么对比呢?

                        Start)  如果$1 是这个值start

                                   那么 echo “服务开始启动” 就输出这句。

  • 相关阅读:
    上台阶
    格子游戏
    找同乡
    约德尔测试
    hihocoder_week195奖券兑换
    hihocoder_week197逆序单词
    牛客网--数串
    hihocoder_offer收割编程练习赛55_3
    hihocoder_offer收割编程练习赛55_2
    hihocoder_offer收割编程练习赛55_1
  • 原文地址:https://www.cnblogs.com/changtianwei/p/9907715.html
Copyright © 2011-2022 走看看