美文网首页
linuxShellStudyNote

linuxShellStudyNote

作者: 由木人_番茄 | 来源:发表于2018-01-22 00:54 被阅读0次

    1 Shell 中的变量

    • 使用declare声明变量

      declare var_name=var_value

      # declare -i var_name 将定义的变量定义为整数型变量

      # declare -r var_name 声明的变量为只读 变量

      # declare -p var_name 显示指定变量的属性和值

      # declare -x var_name 将指定的变量通过环境输出到后续命令

    • 清除变量

      unset var_name # unset function_name 清除变量或函数

    2 变量的引用

    `` # 反引号,shell会将反引号中的内容视作命令,并用指向结果代替反引号以及反引号中的内容

    '' #单引号,全引用,单引号中的所以内容都不会被解释成其他意思,只保留显示的意义

    ""# 双引号,半引用,双引号中的内容处理 `` '' "" $ \ 之外,均保留显示的意义

    取变量的值

    • 使用 $var_name # 获取变量的值,可能会出错
    • 使用 ${var_name} # 推荐使用这种方式获取变量的值

    3 算术表达式

    • 使用let

      let var=" var + 1"

      let var=${var}+3

      # 使用let时如果要在运算符左右使用空格,那么必须加上双引号

      # 使用let 使用可以使用$,也可以不实用$

    • 使用 expr

      var=`expr $var1 \* $ var2`

      # **实用expr时运算符左右必须实用空格,变量必须使用$ **

    • 使用 $(())

      var=$(( var1 +${var2} ))

      # 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格

    • 使用$[]

      var=$[ ${var1}+ var2 ]

      # 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格

    • 使用 bc

      # 前面的集中方法只能用于处理整数而不能用于处理浮点数运算

      # bc 提供任意精度的计算

      • 1 直接使用外部程序 bc

      • 2 使用管道

        res=` echo "${var1}/10 + 2*(3-5*4)" | bc -l `

    4输入输出

    • read 输入

      read -r var1 var2

    • printf 格式化输出

      printf "%.3f\n" ${var}

    5命令替换

    • `shell_command`
    • $(shell_command)

    6测试

    • 字符串测试

      # 字符串测试

    • 整数测试

      # 整数测试

    • 文件测试

      # 文件测试

    7函数

    1定义

    func_name(){
      statment1
      statment2
    }
    # or
    function func_name(){
      statment1
      statment2
    }
    

    2调用

    func_name arg1 arg2 arg3
    

    3函数链接/函数调用函数

    helloWord(){
      echo "Hello World"
    }
    function alice(){
      echo "in allice"
      helloWord()
      echo "end"
    }
    #调用函数
    allice()
    

    4函数返回值

    Shell 中的函数的返回值必须是0-255之间的整数,即函数只能返回状态码

    函数的返回值可以通过$?来获取

    5获取函数参数

    # $# 获取参数的个数
    # $n 获取第n个参数,其中n为正整数
    # $@ $* 获取所有参数
    
    # 移动位置参数
    # shift
    
    function func(){
      while (( $# > 0 ))
      do
          echo "${1}"
          echo $#
          #shift改变$#的值
          shift
      done
    }
    
    #间接参数传递
    var1=var2
    var3=var1
    echo ${!var3}
    #output var2
    
    # 传递数组
    # shell 不支持传递数组,但是可以通过其他方式传递数组的值
    func_name "${arr[@]}"
    # 双引号必须加,否则会出错
    
    # 调用其他文件的函数
    #! /bin/bash
    #载入函数库
    . file_name.sh
    # dot 后面必须有**空格**
    
    

    相关文章

      网友评论

          本文标题:linuxShellStudyNote

          本文链接:https://www.haomeiwen.com/subject/acecaxtx.html