• Shell 学习


    Shell编程

    shell :弱类型、 解释型语言

    解释器:bash

    一、变量

    bash的变量类型:

          环境变量

          本地变量(局部变量)

          位置变量

          特殊变量:bash内置的用来保存某些特殊数据的变量。(也叫系统变量)

    本地变量:只属于某一个bash的变量。

          var_name=值

          作用域:整个bash进程

    局部变量:

          local var_name =值,   

          作用域:当前代码段。

    环境变量:

          export 名字=值

          作用域:当前的shell和其子shell。

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

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

          系统自动启动脚本(非命令行启动):则需要自我定义环境变量。

    位置变量: 用于 脚本执行的参数,$1 表示第一个参数,以此类推

          $1,$2….

    特殊变量:

        $?  上一个命令的执行状态返回值。

        $#  传递到脚本的参数个数

        $*   传递到脚本的参数,与位置变量不同,此选项参数可超过9个

        $$  脚本运行时当前进程的ID号,常用作临时变量的后缀,如 haison.$$

        $!  后台运行的(&)最后一个进程的ID号

        $@  与$#相同,使用时加引号,并在引号中返回参数个数

        $-   上一个命令的最后一个参数

        $?  最后命令的退出状态,0表示没有错误,其他任何值表明有错误

    程序有两类返回值:

    1、         执行结果

    2、         执行状态,$? : 0:表示正确,1-255:错误

    输出重定向:

        >  覆盖重定向

        >>  追加重定向

        2>   错误覆盖重定向

        2>>  错误追加重定向

        &>   全部重定向

    撤销变量:

          unset  变量名

    查看shell中变量:

    set  命令

    查看shell中的环境变量

    printenv

    env

    export

    引用变量:${变量名},一般可以省略{}

         

    单引号:强引用,不作变量替换

    双引号:弱引用,做变量替换

    反引号:``命令替换

    二、脚本

    条件判断:

          条件表达式:

    1、          [  expression  ]

    2、         test expression

         整数比较:

               -eq :  比如:[ $A –eq  $B ]

               -ne , -gt ,-lt,-ge,-le

    命令的逻辑关系:

          在linux 中 命令执行状态:0 为真,其他为假

         

          逻辑与: &&

               第一个条件为假时,第二条件不用再判断,最终结果已经有;

               第一个条件为真时,第二条件必须得判断;

          逻辑或: ||

          逻辑非: !

          命令执行的状态  的逻辑关系

    1、如果用户user6不存在则添加用户6

    ! id user6 && useradd user6

    Id user6  ||  useradd user6

    备注:

    passwd默认是要用终端作为标准输入,加上--stdin表示可以用任意文件做标准输入
    于是这里用管道作为标准输入

    条件判断,控制结构:

          If  条件 ;then

                   语句

          elif  条件 ; then

              语句

          else

                   语句

              fi

    -a : 逻辑与,并且 :  if  [ $# -gt 1 –a  $# -lt 3 –o $#  -eq 2 ] ; then

    -o :或者    

    bash  -n  shell文件 :检查文件是否有语法错误。

    bash –x shell 文件 :debug 执行文件

    Shell 中如何算术运算

    1、         let  算术运算表达式

    let  C=$A + $B

    2、$[算术表达式]

         C  = $[$A+$B]

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

          C=$(($A+$B))

    3、         expr  算术表达式  ,注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用

    C=`expr $A + $B`

    exit  : 退出脚本

          退出脚本可以指定脚本执行的状态:exit 0 。

    复习:

          测试方法:

               [  表达式  ]

                         [[  表达式  ]]

               test  表达式

             INT1=33

          INT2=32

          [  $INT1  -eq  $INT2  ]

          [[  $INT1  -eq  $INT2 ]]

          test $INT1  -eq  $INT2

    文件测试: [ ]  需要中括号

    -e  FILE :测试文件是否存在

    -f  FILE :测试文件是否为普通文件

    -d FILE :测试文件是否为目录

    -r   权限

    -w   

    -x

    特殊变量:

    $#  $@

    字符串测试:

    == 等号两端需要空格

    !=

    -n   string : 判断字符串是否为空

    -s  string : 判断字符串是否不空

    循环:进入条件,退出条件

    for  变量  in 列表 ; do

    语句

    done

    比如:  for  I  in 1  2 3 4 5 ;do

                      语句

               done、

    如何生成列表:

          1、{1..100}

          2、seq  [起始数]   [跨度数]  结束数

          3、ls  /etc 文件列表

    While 循环

    格式一

    while 条件;do

    语句

    [break]

    done

    格式二 死循环

    while true

    do

        语句

    done

    格式三 死循环

    while :

    do

        语句

    done

    格式四 死循环

    while [ 1 ]

    do

        语句

    done

    格式五 死循环

    while [ 0 ]

    do

        语句

    done

    case 语句

    case  变量  in

    value1)

    语句

    ;;

    value2)

       语句

    ;;

    *)

      语句

    ;;

    esac

  • 相关阅读:
    adb命令之adb install
    GNU make and Makefile
    Makefile经典教程(掌握这些足够)
    Android.mk简介
    PhoneFactory.getDefaultPhone must be called from Looper thread
    Android源码目录结构
    软件部通用技术类网站名录
    β测试
    α测试
    白盒测试
  • 原文地址:https://www.cnblogs.com/langfanyun/p/8379387.html
Copyright © 2020-2023  润新知