• Shell编程


    什么是shell

    shell一般代表两个层面的意思,一个是命令解释器,比如BASH,另外一个就是shell脚本。

    BASH环境

    第一种方式

     新建一个myshell文件

    在这个文件下写一个shell脚本

    bash 文件名  # 打印文件内容

    第二种方式

     

     

    注释

    单行注释

    #内容

    多行注释

    :<<!
    内容
    !

    变量的定义

    基本语法

    1.定义变量:变量名=变量值
    2.撤销变量:unset 变量名
    3.声明静态变量:readonly 变量名.        静态变量不能unset

    定义规则

    1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头
    2.等号两侧不能有空格
    3.变量名称一般习惯为大写

    将命令的返回值赋给变量

    1.A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A
    2.A=$(ls -la) 等价于反引号

    设置环境变量

    1.export 变量名=变量值        将shell变量输出给环境变量
    2.source 配置文件             让修改后的配置信息立即生效
    3.echo $变量值                  查看环境变量的值

    位置参数变量

    介绍

    当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

    基本语法

    1.
    $n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
    
    2.
    $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
    
    3.
    $@  (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
    
    4.
    $#(功能描述:这个变量代表命令行中所有参数的个数)

    预定义变量

    介绍

    就是 shell 设计者事先已经定义好的变量,可以直接在 shell 脚本中使用

    $$     (功能描述:当前进程的进程号(PID))
    $!    (功能描述:后台运行的最后一个进程的进程号(PID))
    $?    (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败)

    运算符

    基本语法

    1.$((运算式))
    2.$[运算式]
    3.`expr m + n`
        特点:运算符之间要有空格
        +
        -
        /
        %
        *
        (    )

    判断

    基本语法

    [ 条件 ]            注意:条件前后要有空格
    
    特别的:
    [ 非空 ]      为true
    []           为false
    [ haha ] && echo true || echo false

    判断语句

    字符串比较

    =    判等
    !=  判不相等

    整数比较

    -lt        小于
    -le        小于等于
    -gt        大于
    -ge        大于等于
    -eg        等于
    -ne        不等于

    文件权限判断

    -r    有读的权限    [ -r 文件 ]
    -w    有写的权限
    -x    有执行权限

    文件类型判断

    -f 存在并且是一般文件    [-f 文件]
    -e 文件存在
    -d 存在并且是一个目录

    流程控制

    if判断

    基本语法

    if [ 条件 ]
    then
        代码
    fi
    if [ 条件 ]
    then
        代码
    else
        代码
    fi
    if [ 条件 ]
    then
        代码
    elif [ 条件 ]
    then
        代码
    else
        代码
    fi

    case 选择分支

    基本语法(相当诡异,令人发指,what a fuck)

    case $变量名 in
    '值1')
    代码
    ;;
    '值2')
    代码
    ;;
    *)
    代码                    都没命中执行
    ;;
    esac

    for循环

    遍历

    基本语法
    for 变量 in 值1 值2 值3
    do
        代码
    done

    循环

    基本语法
    for {{初始值;循环条件;变量变化}}
    do
        代码
    done

    while循环

    基本语法

    while [ 条件 ]
    do
        代码
    done

    与用户交互

    基本语法

    read 选项 变量
    选项:
    -p:提示信息
    -t:等待输入的时间

    函数

    系统函数

    basename

    基本语法
    basename [pathname] [suffix]
    获得路径最后一部分
    
    如果指定的suffix,那么会去掉结果中suffix的部分

    dirname

    基本语法
    dirname [pathname]
    获得基础路径

    自定义函数

    基本语法

    function 函数名(){
        代码;
        #参数使用:$1,$2,...,${10}...
        return xxx;
    }
    
    调用:
    函数名 值1 值2
  • 相关阅读:
    xml模塊
    xlrd,xlwt模塊
    logging模塊
    正則補充
    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
    安卓--子线程和主线程之间的交互实例(时钟)
    Android--全局获取Context的技巧
    Android 广播机制
    android编写Service入门
    Android的Looper,Handler以及线程间的通信
  • 原文地址:https://www.cnblogs.com/xiongying4/p/12697335.html
Copyright © 2020-2023  润新知