zoukankan      html  css  js  c++  java
  • Linux就该这么学--Shell脚本基本应用

    1.接收用户的参数:

    Shell脚本为了能够让用户更灵活的完成工作需求,可以在执行命令时传递参数:(命令名 参数1 参数2...)

    Shell预定义变量:

    $0  当前执行Shell脚本的程序名

    $1-9,${10},${11}...  

    $#  一共有多少个参数

    $*  所有位置变量的值

    $?  判断上一条命令是否执行成功,0为成功,非0为失败。

    eg.

    创建并编辑Demo.sh:

    vim Demo.sh
    

     编辑内容如下:

    #!/bin/bash
    echo "当前脚本名称为$0"
    echo "总共有$#个参数,分别是$*"
    echo "第1个参数为$1,第5个为$5"
    

     

    2.判断用户的参数

    Shell 脚本有时还要判断用户输入的参数,例如像mkdir命令一样,当目录不存在则创建,若已存在则报错,条件测试语句能够测试特定的表达式是否成立,当条件成立时返回值为0,否则返回其他数值。

    格式:[ 条件表达式 ]     (两边均有一个空格)

    细分测试语句有:文件测试、逻辑测试、整数值比较、字符串比较

    文件测试:[ 操作符 文件或目录名 ]

    -d  测试是否为目录

    -e  测试文件或目录是否存在

    -f  判断是否为文件

    -r  测试当前用户是否有权限读取

    -w  测试当前用户是否有权限写入

    -x  测试当前用户是否有权限执行

    eg.

    判断/home是否为目录:

    [ -d /home ]
    

    显示上一条命令的返回值,非0则为失败,即不是目录:

    echo $?
    

    判断/home/Demo.sh是否为文件:

    [ -d /home/Demo.sh ]
    

    符号&&代表逻辑上的“与”,当前面的命令执行成功才会执行后面的命令,判断/home/Demo.sh设备是否存在,若存在则输出Exit:

    [ -e /home/Demo.sh ] && echo "Exit"
    

    逻辑测试:[ 表达式1 ] 操作符 [ 表达式2 ]

    &&  逻辑的与,“而且”的意思

    ||  逻辑的或,“或者”的意思

    !  逻辑的否

    eg.

    USER变量是当前登录的用户名:

    echo $USER
    

    若当前登录的用户不是root,则输出user,执行后结果为空:

    [ $USER != root ] && echo "user"
    

    登录ftpuser,再来测试便输出user字样:

    换回root用户后用加强版的判断语句,非root用户则输出user,若是root则直接输出root:

    [ $USER != root ] && echo "user" || echo "root"
    

    这里,请思考一下&&与||的逻辑含义,因为前面的&&不成立,所有后面的||才会执行。

     整数值比较:[ 整数1 操作符 整数2 ]

    -eq  判断是否等于

    -ne  判断是否不等于

    -gt  判断是否大于

    -lt  判断是否小于

    -le  判断是否等于或小于

    -ge  判断是否大于或等于

     比较10是否大于10:

    [ 10 -gt 10 ]
    

     

    比较10是否等于10:

    [ 10 -eq 10 ]
    

     获取当前可用的内存量,并将此值赋值给变量FreeMem:

    首先用free -m 查看以m为单位的内存使用情况,然后grep Mem:过滤出剩余内存的行,最后用awk '{print $3}'过滤只保留第三列,而FreeMem='语句'则表示执行里面的语句后赋值给变量。

    FreeMem=`free -m | grep Mem:| awk '{print $3}'`
    

     FreeMem=``(这里的`是反引号,Tab键的上面,1的左边)

    FreeMem=`free -m | grep Mem:| awk '{print $3}'`
    

    判断此值是否小于2048(单位是M),若小于则提示内存不足:

    [ $FreeMem -lt 2048 ] && echo "内存不足"
    

    字符串比较:[ 字符串1 操作符 字符串2 ]

    操作符:

    =  比较字符串内容是否相同

    !=  比较字符串内容是否不同

    -z  判断字符串内容是否为空

    判断String变量是否为空值:

    [ -z $String ]
    

     上一条命令执行成功,说明变量String确实为空值:

    echo $?
    

    输出当前的系统语言:

    echo $LANG
    

    判断当前的系统语言是否为英文,否则输出“不是英文”:

    [ $LANG != "en.US" ] && echo "不是英文"
    

  • 相关阅读:
    Dactor 一个好用的基于协程的全异步框架,适合复杂异步流程
    mysql原表增加字段且设置默认值及修改字段默认值
    js扩展
    mysql建表且设置主键自增
    mysql事务的实现方式——mvvc+锁
    mysql排他锁
    mysql的共享锁
    mysql的体系结构及sql的执行路径
    小程序 使用echarts 数据动态变换
    js 整理 前端知识点 前端面试题 (2020)(vue)
  • 原文地址:https://www.cnblogs.com/zjiacun/p/8192413.html
Copyright © 2011-2022 走看看