• bash学习


    一 shell区别及运行方法

        shell一般指 shell script脚本;而广义是指shell终端是和操作系统沟通的桥梁,一般有Bsh和Bash.

        运行方法:

    1. 按可执行程序执行:先编写脚本文件filename.sh(以#!/bin/sh作为首行,说明后面的按该shell执行);然后用chmode -x filename.sh修改成可执行权限;然后以./finename.sh来执行
    2. 直接执行:./bin/sh filename.sh来执行。当然此时文件不需要以#!/bin/sh作为首行.

        2种注释:

    1. 单行注释:#
    2. 多行注释:其中的2个/可以换成其它字符
      :<</
      
      
      /

    二 变量;

    1. 由字母数字下划线组成,变量名与=号之间无空格
    2. 变量使用:${var}
    3. 数组 arry={val1 var2 var3)     
    4. 数组的调用${arry[n]}   ,整个数组${arry[@]},数组元素的个数${#arry[@]}
    5. 字符串:单引号中不能集合变量;双引号可以。字符串长度 str="abcd"  len=${#str};同时可以切片求子串或查找字符 ab==${str:0:2}
    6. 删除变量 unset var

    三 变量传递:

        在.sh脚本中用$n来接收传递的参数,一般第一个参数$0一般是文件本身,其它参数从1开始。在终端中直接按 ./filename.sh para1 para2 ....来传递参数。

        参数的总个数$#来表示。所有的参数的表示$*或者$@前者等于把所有的参数作为一个字符串;而后者则将每一个参数作为一个字符串。

        【】中间可以对参数进行一些比较和判断。前后都要有空格

     四 运算:

         表达式:`expr  $a * $b` ,注意expr后的字符时esc键下面的的字符不是单引号。乘号*前需要加

         关系运算符:-eq  -ne  ;-ge -lt;  -ge  -le;

         布尔运算符:-a,-o,!

          逻辑运算符:&&,||

          字符串运算符:=,!=;  -z /-n/$分别代表长度为0,不为0,字符串为空

         温控按摩测试运算符;

    五 其它命令:

         echo str  >>filename.sh  #输出到文件。

        read var:#从标准输入中读取一行给shell变量var

        printf format-string [arguments...]

        test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试.

       let:

       grep :是从给定字符串中寻找匹配内容的命令.如echo "Hello World !" | grep -e Hello   echo $?    #结果为Hello World !    0#成功在hello word!中找到匹配的hello字符串

      

    六流程控制:

      5.1分支结构:

        

    f condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi

    5.2 多分支选择:

      

    casein
    模式1)
        command1
        command2
        ...
        commandN
        ;;
    模式2)
        command1
        command2
        ...
        commandN
        ;;
    *)#类似于defualut
        break/continu  #跳出循环的2种类似C的方法
      ;;
    esac

    5.3 循环结构:

     1 #for循环
     2 for var in item1 item2 ... itemN
     3 do
     4     command1
     5     command2
     6     ...
     7     commandN
     8 done
     9 
    10 
    11 #while循环
    12 while condition
    13 do
    14     command
    15 done
    16 
    17 #until循环
    18 until condition
    19 do
    20     command
    21 done
    22 
    23 #超级循环的几种格式:
    24 while :
    25 #while true
    26 do
    27     command
    28 done
    29 
    30 for (( ; ; ))

    六 函数:与C大致相同,不同的是

    1.   函数调用时不需要加()
    2. 函数的参数传递:实参直接逐个写,程序里面用$n来或者对应参数。
    3. 函数的返回值:$?     #需要注意的是这需要在函数调用后直接来用,不能跨函数使用;和 C 语言不同,shell 语言中 0 代表 true,0 以外的值代表 false。

    七 重定向:标准输入、标准输出,错误输出,

      command >file:(覆盖方式)重定向输入到file中;command >>file:(追加末尾方式)重定向输入到file中。

         

          /dev/null 文件:当重定向到这里时,相当于禁止输出。因为写进去的内容被丢弃,读时啥也读不到。

    八文件的包含:

       . filename # 注意点号(.)和文件名中间有一空格 source filename

  • 相关阅读:
    DevOps系列【gitlab如何新建项目仓库?】
    Redis系列【docker带密码进入redis】
    Vue系列【js把一个类对象数组抽取类中几个属性重新组成新的类对象数组】
    一句话概括SSO和OAuth2.0
    CListCtrl控件使用指南(大全)
    CListCtrl的主要事件及鼠标响应函数
    c语言动态内存分配(上课)
    OSPF 路由聚合
    华为 OSPF基本配置
    OSPF NSSA区域
  • 原文地址:https://www.cnblogs.com/jieruishu/p/14991402.html
Copyright © 2020-2023  润新知