zoukankan      html  css  js  c++  java
  • 脚本

    一、脚本概述与要求

    1、脚本原理

    脚本的意义:通过命令解析行的方式帮我们自动取执行设定好的命令代码;

    脚本里的命令是一行一行的执行内容里的命令;脚本里写的命令必须都是非交互式命令”。

    假如我们把脚本挂在定时任务里,那就是自动在某个没有人的时间里,自动触发程序。

    2、书写脚本格式要求

    后缀必须以.sh结尾

    内容第一行必须以#/bin/bash

    3、脚本的开启要求

    sh命令或者bash命令开启

    Linux下,绝对路径执行脚本,不告诉它用什么解释器,会默认用bash解释器,

    以绝对路径,直接执行脚本(脚本文件必须有x权限)

    chmod +x benchi.sh

    4、脚本的逻辑性判断

    1)判断命令:

    -f +文件名  判断是否是文件(是否存在)      echo$

    -d +目录  判断对象是否是目录(是否存在)    echo$

    -d  判断目标是否存在(无论是文件或目录)

    -z  判断某个字符串是否为空

    eg[ -z “” ] && echo || echo “不空”

     

    判断完后,输入echo$ 输出0即判断正确,非0则错误,或者不存在

    eg

    test -d /root/asdf && cd /root/asdf && pwd || echo ”不去了

    执行前面的test -d /root/asdf,如果失败则不执行&&后面的命令;

    eg[-d /root ] || mkdir -p /root

    cd /root

    判断/root是否是目录,是否存在;如果存在则不执行||后面的命令

    直接执行下一行;

    如果不存在,则执行||后面的命令,然后再执行下面的命令。

    2[  ]真假判断条件

    xx=”welcome”

    [ $xx == “welcome” ] && echo “0” || echo “1”

    两个等号就是等于,   !=不等于

    [] -a   并且,两端都为真

    [] -o   或,有一个为真

    [] !    相反则为真

    (3)大于与小于判断

    -gt命令:(great than)大于     -ge命令:大于等于

    -lt 命令:(less than) 小于       -le 命令:小于等于

    -eq命令:等于                -ne 命令:不等于

    (4)关于逻辑&& ||

    &&符号的左边执行正确(0),则执行右边,否则不执行

    || 符号的左边执行错误(非0),则执行右边,否则不执行

    ||前面的命令执行失败,则执行||后面的命令。

    eg:真假 && cd /root || cd /home

    (5)看变量字符的数量${#x}

    6sh -x 跟踪判断,每一条输出和命令都能看到执行的过程,用来判断哪一条代码出错。

     

    二、交互式脚本

    1、让用户输入变量

    read  + 变量

    read num  num是变量)

    echo $num  $num就是输出上面的变量)

    这时候输入111

    输出的就是111

    2、用户提示语参数

    1read -p 提示语参数-p

    read -p ”文本提示“  变量(变量首字母大写)

    eg:

    #!/bin/bash

    read -p “请输入数字:” num

    echo $num

    2read -p具体应用

    read -p “请输入你的成绩:” num

    [ $num -lt 60 ] && echo “不及格

    [ $num -eq 60 ] && echo”及格

    [ $num -gt 60 -a $num -lt 70 ] && echo “

    [ $num -ge 70 -a $num -lt 80 ] && echo”良好

    [ $num -ge 85 -a $num -le 100 ] && echo “优秀

    [ $num -ge 100 ] && echo “sb”

    User=baoma

    Passwd=123123

    read -p “请输入账号:” user

    read -p “请输入密码” passwd

    [ $User == $user ] && echo “账号正确” || echo “账号错误”

    [ $Passwd == $passwd ] && echo “密码正确” || echo “密码错误”

    3)通过参数的方式进行交互

    例如:/etc/init.d/postfix start/etc/init.d/目录下的文件都是脚本,但是却可以通过加start启动脚本,这就是参数传递。

    $#      表示参数的个数

    $*      横向显示所有参数 ($*将命令行的所有参数看成一个整体

    $@     横向显示所有参数 ($@则区分各个参数

    $0      代表脚本文件的执行路径

    $1...$n   对应传入不同的参数

    4)模拟C语言计算

    #/bin/bash

    a=1

    b=2

    echo “$((a+b))

    用两个小括号模拟C语言运行

    5)输入重定向

    cat << FOF    FOF是结束符号,碰到这个符号就截止)

    输入命令后,开始换行输入内容,最后把结果传给cat,输出到屏幕上。

    cat > BENCHI.txt << FOF

    输入命令后,开始换行输入内容,最后把结果传给catcat再重定向到文件里。

    3、反引号``

    xx=`which cp`

    echo $xx

    反引号里命令的执行结果赋值到xx上,然后输出到屏幕上

    4、强行终止脚本 exit

    exit  (碰到这个字样就强行终止)

    [ $# -eq 3 ] && echo “你输入了3个参数”&& exit

    echo “你输入的参数不对”

    ##如果输入的参数个数等于3个,则输出“你输入了3个参数”然后退出

    如果输入的参数个数不符合条件,则输出第二行“你输入的参数不对”

    三、逻辑语法

    1if语句(单条件)

    if [条件]            如果

    elif[条件]           否则如果  

    then               

    else               否则

    fi 结尾符号

    eg

    read -p “请输入一个数字:”num

    if [ $num -eq 66 ]

    then

            echo “正确”

    else

            echo  “错误”

    fi

    ##请输入一个数字,如果输入66,则显示正确,如果输入非66,则显示错误。

    2、if语句多条件

    执行顺序是从上到到下优先级,执行完成后,后面不执行。

    read -p “请输入你的成绩:” num

    if [ num -ge 100 ]          如果:

    then                    则:

    echo “牛逼

    elif [ num -ge 85 ]           否则如果:

    then                    则:   

    echo “优秀

    elif [ num -ge 70 ]           否则如果

    then                    

    echo “优秀

    elif [ num -ge 60 ]           否则如果

    then                    

    echo “及格

    else                     否则

    echo“不及格”      就

    fi                       结束

    四、搭建yum仓库

    五、for循环语法

    1for循环概述

    for i in 13579

    do

    echo $i

    done

    原理:i13579里一个一个得取值,先把1赋值给i,然后i1带入循环体中,(循环体就是dodone之间)进行这之间的输出到done结束,再返回赋值下一个,再带进循环体....直到都取完输入完。

    2for循环后面可以跟一个命令

    for循环后面可以跟一个命令,但是要加反引号,而且需要横排的命令

    egfor i in `ls /root | xargs`

    3、for变种C语言循环(())

    for((i=0;i<10;i=i+1))

    解析:先给i设定一个初始值i=0;然后设定一个循环条件i<10;如果到不符合这个条件就结束循环,再设定一个条件递增公式i=i+1,再进入循环条件里判断,最后再执行

    4、判断网段里IP地址哪些存活

    for ((ip=1;ip<255,ip++))

    do

    ping -c 1 192.168.154.$ip &>/dev/null

    if [ $? -eq 0 ];then

    echo”192.168.154.$ip活的

    fi

    done

    ping -c 1ping一次结束,不再ping

    ping -i 0.1:以0.1秒的速度ping

    六、其他循环体

    1while循环概述

    read -p “输入:” i

    while [ $i -lt 10 ]

    do

    echo $i

    let i++

    done

    无限循环,后面加一个冒号,什么都不用加了,进入无限循环

    while

    2、break

    碰到break跳出当前的循环,执行循环下面的内容...

    3continue

    终止当前的本次循环,回到当前循环开头再走一遍。

    4return

    碰到return直接跳出函数体,执行函数体后面的内容...

    七、case

    1case的基础用法:

    一般用在没有优先级的场合,每种条件的情况看起来非常简单;都是平级的,没有优先级关系,通常启动脚本的时候,只用这种格式。

     

    2、模仿系统脚本详细用法的步骤

     

    1)首先要引用一个函数库,这样就可以用action命令(有系统脚本的效果)

    2. 是在当前位置下引用函数,

    3$1 代表脚本外的变量,如:startstop

    4)要想脚本外专业的显示开启或关闭(okfail的字样)就要这样写。

     

    3、让chkconfig识别自己写的脚本

    在脚本的开头加# chkconfig: 35 90 10

    35代表在35模式中启动,90关机的优先级和10开机的优先级(后面两个数字不用记)

    使用命令:chkconfig --add case.sh

    chkconfig --list cash  查看该服务开机自启动状态

    八、函数式编程

    1、函数的概述

    把一些小过程,写到函数里,当我们需要用到这些小过程的时候,只要调用函数名字,即可实现。

    无论什么编程语言,基本只有三种编程方法

    1、面向过程:

    就是按照一定的顺序进行代码的编写,不能跳步。

    2、面向对象

    3、函数式编程

    这三种模式,并不是语法,而是教我们如何取编写代码的方法论。

    shell这种语言里,只能支持面向过程这种编程方法。

    2、函数的写法格式

     

    function 是函数体里必须要有的

    xicai是这个函数的名字

    (){}是必须要有的格式

    最后调用的时候,需要在调用的位置写出函数的名字。

    3、函数的源码编译应用

     

  • 相关阅读:
    [Lydsy1805月赛]口算训练 BZOJ5358
    我所不知的JS
    基于Spring Cloud 几行配置完成单点登录开发
    彻底终结MySQL同步延迟问题
    编写优秀 CSS 代码的 8 个策略
    10个用Java谋生非常有趣的方式
    深入理解JVM-垃圾回收器
    SpringBoot下文件上传与下载的实现
    java 使用面向对象方式实现录入学生信息,取出成绩最大值、最小值、平均值、对其进行排序
    JavaSE基础:泛型
  • 原文地址:https://www.cnblogs.com/kakajiang/p/9899556.html
Copyright © 2011-2022 走看看