zoukankan      html  css  js  c++  java
  • shell 脚本基础与条件判断

    #!shell脚本格式决定专业性

    #!/bin/bash
    #filename:脚本名
    #author:作者
    #date:时间
    #脚本作用

    脚本的执行方式  #脚本名为wk.sh

    绝对路径 /root/wk.sh          #另开一个shell终端执行
    相对路径 ./wk.sh
    sh解释器 sh wk.sh 与bash一样 bash wk.sh
    source 脚本路径( 与. wk.sh)路径相同        #在当前终端执行,在当前终端生效
    #除了sh 解释器执行脚本 其他三种执行方式脚本必须有x权限        

    重定向操作

    类型 设备文件 文件描述编号 默认设备
    标准输入 /dev/stdin 0 键盘
    标准输出 /dev/stdout 1 显示器
    标准错误输出 /dev/stderr 2 显示器
    类型 操作符 用途
    重定向输入 从指定文件读取出书
    重定向输出 >    >> 将输出结果指定或追加到文件
    标准错误输出 2>  2>> 将错误输出指定或追加到文件
    混合输出 &> 输出不论对错 指定到一个文件

    变量

    自定义变量:

    wk=heheheheecho $wk
    hehehehe

    环境变量:由系统维护的变量

    env             #查看环境变量
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin            #用于可执行程序的搜寻路径

    位置变量: 通过命令行给脚本传参

    $0 对应脚本名  $1-8对应8个参数        #shell脚本最多可以直接处理9个参数

    预定义变量: bash中内置的变量,不能直接修改

    $*和$@                 #保存了传递的所有参数
    $0                     #脚本名称
    $?                     #输出状态码
    $#                     #参数个数
    $$                     #输出脚本的PID

    定义变量与输出

    定义一个新的变量
    格式:变量名=变量值
    注意:变量名必须以字母或下划线开头,严格区分大小写(不能以数字开头)
    赋值可使用引号
    单引号:''不引用变量,视$为普通字符
    双引号:""允许通过$调用变量
    反撇好:``或$()先取其中的命令,再执行结果

    交互式输入输出

    交互式输入
    read -p "提示信息" 变量名

    局部变量与全局变量

    export 变量名
    exprot 变量名=变量值
    在全局生成变量

    变量的运算

    echo $((x+y))

    条件判断

     (1)文件判断

    -d 判断是否为目录
    -e 判断目录或文件是否存在
    -f 判断是否为文件
    -r -w -x 判断读写执行权限
    -L 判断是否为链接文件

    #格式
    [ -d /root ]
    echo $?
    0

    (2)整数判断

    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于
    #格式
    [ 1 -eq 1 ]
    echo $?
    0

    (3)字符串判断

    [ aaa == aaa ] #字符串内容相同
    [ aaa != bbb ] #字符串内容不同
    [ -z 字符串 ]   #字符串内容为空

    (4)逻辑测试

    &&而且
    ||或
    条件1 && 条件2 || 条件3   #如果条件1成立则执行条件二,不成立执行条件3

    条件1 || 条件2 #如果条件1不成立,执行条件2,不论成不成立都继续往下执行条件3
    条件3

    条件1 ||{     #如果条件一不成立则执行括号内的条件2和条件3
    条件2
    条件3
    }

    if语句

    if 条件1;then      #如果 条件1成立;那么
    echo 1          #输出 1          
    elif 条件2;then        #或者 条件2成立;那么
    echo 2          #输出 2
    else               #否者 
    echo 3          #输出 3  
    fi              #"if结束语"

    case语句

    case 变量 in               #判断一个变量  从上到下依次匹配 匹配及停止
    1)               #如果变量等于1
        echo "hehe"       #输出 hehe
        ;;
    2)               #如果等于2
        echo "xixi"       #输出 xixi
        ;;
    *)               #通配符*匹配所有
        echo "zzz"        #输出 zzz
    esac              #"case结束语"  

    sshe函数

    执行脚本
    #!/bin/bash
    haha(){        #定义一个函数,函数名为haha
    echo $1        #函数内的shell语句, 调用函数就会执行函数里的内容
    echo $2
    echo $10
    echo ${10}         #2位以上的参数需用大括号括起来让他是一个整体
    }
    haha 1 2 3 4 5 6 7 8 9 11      #函数可以传参,但是一般不用传参而是直接调用函数名,执行函数里的内容
    #执行结果  
    1
    2
    10
    11  

    shell循环语句

     for循环

    唯一无法实现无限循环的循环语句,因为for循环的取值是有限的

    #!/bin/bash
    for i in `seq 3`
    do
     echo $i
    done
    #输出结果
    1
    2
    3

    特殊for循环,C语言循环不属于正规shell语言 (( ))两个括号b表示启用C语言,i++是C语言里自身+1  在循环内用let i++调用

    #!/bin/bash
    for ((i=0;i<3;i++))       #引用C语言 i=0并且i<3,i自身+1 
    do
     echo $i
    done
    #输出结果
    0
    1
    2
    #!/bin/bash          #for 无限循环
    for ((i=0;;i++))        #不设置结束条件,实现无限循环,但结束条件的位置要空出来
    do
     echo $i
    done

    while循环

    while :           #while : 条件一直为真无限循环   
    do
        命令
    done    
    #!/bin/bash
    i=0
    while [ $i -le 5 ]
    do
            echo $i
            let i++
    done
    #输出结果
    0
    1
    2
    3
    4
    5

     shell脚本4个循环控制语句

    exit         终止脚本

    break     跳出循环,只跳出离它最近的那次循环

    continue  终止本次循环进入下次循环

    return     针对函数使用,退出函数体

    调用函数 

    调用系统函数
    . /etc/init.d/functions 
    action  "服务启动"   /bin/true

     

  • 相关阅读:
    Centos6.5系统压力测试过程大量TIME_WAIT
    几种常用的数据库连接池
    weblogic弱密码检测
    ubuntu系统查看已安装的软件
    Flask Web中用MySQL代替SQLite
    SQLALCHEMY_TRACK_MODIFICATIONS adds significant异常的解决方法
    安装ipython时python setup.py egg_info错误的解决办法
    python manage.py runserver指定端口和ip
    Python连接mysql出错,_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
    linux重启服务的脚本命令
  • 原文地址:https://www.cnblogs.com/ywrj/p/9534231.html
Copyright © 2011-2022 走看看