zoukankan      html  css  js  c++  java
  • shell脚本

    shell简介
    shell脚本程序就是按照一定的语法结构把若干linux命令组织在一起,使这些命令按照我们的要求完成一定功能。它可以进行类似程序的编写,并且不需要编译就能执行.
    当编辑好脚本程序后,要使脚本程序可执行,需要改变其权限:
        #chmod +x filename

    我们用的shell版本是bash,首先新建一个后缀名为 .sh的文件,这就是shell脚本, 如:vi test.sh  编好脚本后,保存退出,加可执行权限后就可以运行这个脚本,和执行程序一样。

    Shell中变量与变量的设定:  变量没有类型
    1.变量与变量内容以等号(=)来连结;    
    2.等号两边不能直接接空格符;    
    3.变量名称只能是英文字母与数字,但是数字不能是开头字符;
    4.引用变量用“$变量名”,例如  echo $name
    5.取消变量的方法  unset 变量名, 例如:unset name
    6.一般大写字符为系统预设变量,自己设定的变量可用小写。

    单引号,双引号,反引号,反斜线用法:
    若有空格符可以使用双引号或单引号将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符。
        # name=“$LOGNAME is me”  //root is me
        # name=‘$LOGNAME is me’  //$LOGNAME is me
    反引号用于设置系统命令的输出到变量,shell将反引号中的内容作为一个系统指令并执行其内容。
    如:echo `hello` 系统会把hello当命令执行,但hello不是命令,不能执行。
    反斜线用来屏蔽特殊字符的特殊含义,如:$ * ! $ | ?
    用echo \*  就会输出 * 这个字符

    特殊的变量:
    $# 传递到脚本的参数个数
    $* 以一个单字符串显示所有向脚本传递的参数
    $$ 脚本运行的当前ID号
    $? 显示最后命令的退出状态,  0表示没有错误   非0表示有错误
    $0 执行脚本的文件名
    $1 $2 $3 ………   脚本的第n个参数名

    env 显示目前系统中主要预设变量内容
    set 显示目前系统中全部变量内量, 这里包括用户设定的变量

    expr 是一个手工命令行计数器,可计算加减乘除,并输出结果
    如: expr 10 + 10   输出结果为20    注意乘法要用:\*

    declare  声明变量的内容
    用法: declare 参数 变量名
    参数: -i 定义为整数             -f 定义为函数
            -a 定义为数组             -r 定义为只读
           -x 定义为透过环境输出变量
    例如: declare –i a 定义a 为整数,在进行整数运算时,可用a来存储结果

    read 从键盘读入变量内容,相当于C语言的scanf 用法: read 变量名


    条件测试:
    test命令就是用于测试字符串、文件状态和数字的.test命令有两种格式:
    test condition
    或[ condition ]
    使用方括号时,要注意在条件两边加上空格.
    测试文件状态的条件表达式
        -e 是否存在    -d 是目录       -f 是文件      -L 符号连接            
    -s 文件非空    -r 可读         -w 可写        -x 可执行
    例如:#test -e test.sh && echo “exist”
          先判断如果该文件存件存在,则输出字符串 exist
    [ … ] && ……        先判断如果是真,则执行后面的命令
    [ … ] ;(分号)……  先判断再执行,不管条件真假

    字符串测试:
      test “str1” 参数 “str2”
      [ “str1” 参数 “str2” ]
    参数:     = 两个字符串相等   != 两个字符串不相等
            -z 空串            -n 非空串

    数值测试:
       test num1 参数 num2
        [ num1 参数 num2 ]
    参数:    -eq 数值相等       -ne 数值不相等
            -gt 数1大于数2       -lt 数1小于数2
            -ge 数1大于等于数2
            -le 数1小于等于数2

    多重条件判定:
    -a (and)与  当前后两条件都为真则返回true
    -o (or)或   当前后两条件有一个为真则返回true
    !           返回相反状态



    控制结构:
    if [条件1]; then
        执行第一段程序
    elif [条件2]; then
        执行第二段程序
    else
        执行第三段程序
    fi

    case $变量名 in
        “第一个变量内容”)
          程序段1
          ;;
        “第二个变量内容”)
          程序段2
          ;;
         *)
            其他程序段
            exit 1
    esac

        在ARM linux平台上,找到 /usr/etc/rc.local 用vi 打开它,里面有一段if语句,查看/mnt/yaffs/下有无 myconfig.sh的文件,如果有就执行。这是用户自己配置的开机脚本,可以在/mnt/yaffs/下新建一个myconfig.sh的文件,在里面写上自己想在开机运行的脚本。比如修改IP,挂接NFS,运行一个小程序等。

    linux开机启动五个脚本文件介绍:
    /etc/profile:
    此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
    并从/etc/profile.d目录的配置文件中搜集shell的设置.  
       
    /etc/bashrc:
    为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
       
    ~/.bash_profile:
    每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
    文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.    
       
    ~/.bashrc:
    该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该   
    该文件被读取.    
       
    ~/.bash_logout:
    当每次退出系统(退出bash shell)时,执行该文件.   

    另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,
    而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

    ~/.bash_profile 是交互式、login 方式进入 bash 运行的
    ~/.bashrc 是交互式 non-login 方式进入 bash 运行的
    通常二者设置大致相同,所以通常前者会调用后者。

    变量与变量的设定

    条件测试

    控制结构  

  • 相关阅读:
    Calling Convention的总结
    形参传递关键点
    linux input输入子系统分析《四》:input子系统整体流程全面分析
    22.Linux-块设备驱动之框架详细分析(详解)
    spring: 使用profiles选择数据源(结合嵌入式数据源EmbeddedDatabaseBuilder)
    spring: 使用嵌入式数据源 EmbeddedDatabaseBuilder
    jsp:jstl标签之控制流程
    jsp: jstl标签库
    jsp:tld标签
    spring boot: 组合注解与元注解
  • 原文地址:https://www.cnblogs.com/qinkai/p/2429715.html
Copyright © 2011-2022 走看看