码迷,mamicode.com
首页 > 系统相关 > 详细

shell

时间:2016-06-05 01:12:05      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:shell

编译器,解释器

编程语言:机器语言、汇编语言、高级语言

静态语言:编译型语言  (事先转换成可执行的格式) C ,C++ ,JAVA ,C#

    强类型   变量在使用前,必须事先声明,甚至还需要初始化

动态语言: 解释型语言   (边解释边执行)asp,aps.net,php ,shell ,python ,perl

    弱类型   变量用时声明,甚至不区分类型

编程模型

    面向过程

    面向对象

bash变量类型:

    环境变量:

    本地变量(局部变量):

    位置变量:

    特殊变量:

注:1、脚本在执行时会启动一个子shell进程

    2、命令行中启动的脚本会继承当前shell环境变量

    3、系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量

环境变量:作用域为当前shell进程及其子进程

    export VARNAME=VALUE

本地变量:作用域为当前shell进程

    VARNAME=VALUE 

局部变量:作用域为当前代码段

    local VARNAME=VALUE 

位置变量:

    $n 参数或者命令本身

    $* 参数列表(整体)

    $@ 参数列表

    $# 参数的个数

    $_  表示命令的最后一个参数

    

  shift n 参数从左边依n踢出(在脚本中使用shift 参数1会踢出,之前参数2变成参数1)

特殊(预定义)变量:

    $? 上一条命令执行状态的返回值(0-255,0:正确执行,1、2、127-未找到该命令  系统预留)

    $$ 所在命令的PID

    $!    代表最后执行的后台命令的PID

撤销变量

    unset VARNAME

查看当前shell中变量

    set

查看当前shell中的环境变量

    env

    export

    printenv

变量引用方式:

    ${VARNAME} 括号可以省略

变量类型:(事先确定数据的存储格式和长度)

    字符型

    数值型

        整型

        浮点型

    布尔型

变量赋值:

    VAR_NAME=VALUE

逻辑运算:

    与运算 &&

    或运算 ||

    非运算 !

    异或运算 

条件测试类型:

    1、整数测试  [ num1 OPERATOR num2 ]

        -eq 测试两个整数是否相等

        -ne 测试两个整数是否不等

        -gt    大于

        -lt 小于

        -ge 大于等于

        -le 小于等于

    2、字符测试 [ char1 OPERATOR char2 ]

        =   两个字符串是否相同

       !=  两个字符串是否不相同

       -z string 测试指定字符串是否为空,空则真,不空则假

       -n string 测试指定字符串是否不为空

    3、文件测试 [ OPERATOR file | dir ]

       文件状态

               -e 目标是否存在

               -d 是否为目录

               -f 是否为文件

       文件权限

               -r 是否有读权限

               -w 是否有写权限

               -x 是否有执行权限

    4、逻辑测试 [ 表达式1 ] OPERATOR [ 表达式2 ]

        -a 或 &&    逻辑与        第一个条件为假时,第二个条件不用再判断,最终结果为假

        -o 或 ||    逻辑与            第一个条件为真时,第二个条件不用再判断,最终结果为真

        !            逻辑非

定义脚本退出状态码

    exit 退出脚本

    exit n    设定退出状态码

  如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的状态码即为脚本的状态码 

bash中可以判断语法错误的语句(不完全可靠)

    bash -n 脚本名  语法错误测试

    bash -x 脚本名  (逐步执行语句) set +|- 可以开启关闭功能 -o 可以查看

条件测试的表达式:

    [ expression ]    命令测试

    [[ expression ]]  关键字测试

    test expression

shell中如何进行算术运算

      a=3

      b=6

    1、let 算术运算表达式

        let c=$a+$b

    2、$[算术运算表达式]

        c=$[$a+$b]

    3、$((算术运算表达式))

        c=$(($a+$b))

    4、expr 算术运算表达式 (表达式中各操作数及运算符之间要有空格,而且要使用命令引用)

        c=`expr $a + $b`

面向过程

    控制结构

        顺序结构

        选择结构

        循环结构

A、选择结构

    if:单分支,双分支,多分支

    case语句:多分支

一、if判断语句

    1、单分支if语句

        if 判断条件;then

            statement1

            statement2

            .....

        fi

    2、双分支if语句

        if 判断条件;then

            statement1

            statement2

            .....

        else

            statement3

            statement4

            .....

        fi

    3、多分支if语句

        if 判断条件1;then

            statement1

             .....

        elif 判断条件2

            statement2

            ......

        elif 判断条件3

            statement3

            ......

        elif 判断条件4

            statement4

            ......

        else

            statementN

            ......

             fi

二、case语句:

    case SWITCH in

        value1)

            statement

            ...

            ;;

        value2)

            statement

            ...

            ;;

        ...

        *)

            statement

            ...

            ;;

    esac

B、循环结构 (循环:进入条件,退出条件)

    for:

    while:适用于循环次数未知的场景,要有条件满足退出循环

    until

一、for循环

    1、for 变量 in 列表;

        do

            循环体

        done

    2、for ((expr1;expr2;expr3));do

            循环体

       done

    如何生成列表

    {1..100}

    `seq 起始数 步进长度 结束数`

二、while循环

    进入循环:条件满足

    退出循环:条件不满足

        while CONDITION;do

            statement

            ...

        done

三、until循环

    进入循环:条件不满足

    退出循环:条件满足

        until CONDITION;do

            statement

            ...

        done


shell

标签:shell

原文地址:http://hqwangping.blog.51cto.com/1359421/1786191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!