• shell笔记_知识回顾


    shell脚本:

    明白一点:shell脚本本身是一个工具

           在写shell脚本之前,就要明白:这个功能能到底如何实现?

           curl 访问文件源代码,查看网站状态;

           才能通过shell(bash)所提供的逻辑关系,来串联这些语句,从而实现,脚本运维自动化;

    1、bash的特性

           history

           重定向原理

           *shell cli界面的快捷键*

                  ctrl+w

           文件通配globbing     

    2、编程原理

           编程原理:二进制  程序:指令+数据+【逻辑关系】

           编程语言的分类:高级语言:1、解释  2、面向 3、变量

           驱动!!

           指令:

                  Linux系统执行的命令(基础)

           逻辑关系:

                  顺序执行

                  循环       for while until

                  分支       if case

                  exit break continue 函数(return)sleep

           数据:

                  变量

                  echo print printf

                  输入 read

                  bash支持的默认变量

                         环境变量(可以直接在代码中使用 $RANDOM env set)  cd - $OLDPWD $PWD

                         传参 $# $? $1 $2 ... $$ $0  $! esc+. !$ ...

                         自定义变量:

                                局部变量

                                函数(本地变量) local

                                数组

                                       a=(a b c d e)

                                            0 1 2 3 4  -- 5

                                       a[5]=f

                                       a[${#a[*]}]=f

                                       echo ${a[*]}

                                       echo ${#a[*]}

    3、文本处理三剑客

           *正则表达式(globbing)

                   <img src="//static.firefoxchina.cn/img/201903/7_5c862cd3c194d0.png"/>

                  grep "^<img[[:space:]].*/>$"

           *grep 行过滤

                  grep egrep fgrep

           *sed 行编辑

                  sed的子命令 s

           *awk 报告生成

                  独立的编程语言解释器;他有自己独立的语法格式;

                  awk的工作原理:1、取  2、分隔 3、处理

                  awk [option]... 'program' file ...

                  1、option -F -v

                  2、program

                         1、print 、 printf(占位符、修饰符(注意:不能忘记回车 ))

                         2、变量

                                内置变量:NF($NF变量调用) (类似于bash的 环境变量)

                                FS OFS (cut --output-dimeter) RS ORS FNR NR ARGV ARGV FILENAME

                                -v

                         3、地址定界(pat 正则表达式)

                                1、空 2、NR>=10&&NR<=20 3、/pat/ 4、/pat1/,/pat2/ 5、BEGIN|END 6、pat1?pat2:pat3【?】

                         4、运算符

                                1、数值运算符:%【取余取模】  //【取整】

                                       随机整数: $RANDOM%100+1        -101%100

                                2、比较运算  > < = != >= <=

                                3、逻辑运算 && || !

                                4、赋值运算 = += 1= ++ --

                         5、action

                         6、语法

                                if switch while do-while for

                                break continue next(!控制默认循环)

                 

                                if(条件语句){执行语句}       

                                if(条件语句){执行语句}else{执行语句}

                                初始语句;while(判断条件){循环体;初始值控制语句}

                                for(初始语句;判断语句;初始值控制语句){循环体}

                                for(变量 in 列表){循环体}

                                。。。

                         7、数组

                                列遍历的数据统计:

                                a

                                b

                                c

                                a

                                b

                                c

                                awk '{array[$1]++}END{for(i in array){printf "%10s出现了%10d次",i,array[i]}}' 文件名

                               

                                a b c a b c

                                awk '/^[[:space:]]*kernel>/{{for(i=1; i<=NF; i++){array[$i]++}}END{for(j in array){print j,array[j]}}}' 文件

                               

    awk '/^[[:space:]]*kernel>/{{for(i=1; i<=NF; i++){array[$i]++}}END{for(j in array){print j,array[j]}}}' 文件

           awk 'program' 文件

                  1、地址定界  /^[[:space:]]*kernel>/

                         /pat/  pattern(正则表达式)  -- ^[[:space:]]*kernel>

                                ^ -- 以什么开头

                                [[:space:]] -- 空格字符

                                * -- 前面的字符出现任意次数

                                “kernel” 固定字符串

                                >  锚定一定是kernel

                                      

                  2、语法statement  {{for(i=1; i<=NF; i++){array[$i]++}}END{for(j in array){print j,array[j]}}}

                         1、循环 -- {for(i=1; i<=NF; i++){array[$i]++}}

                                循环:for

                                赋值:array[$i]++

                         2、输出 -- END{for(j in array){print j,array[j]}}

                                END  -- 在整个默认循环结束以后,执行的语句(只执行一次)

                                循环 -- 索引  --  j

                                           数组值  --  数值

  • 相关阅读:
    instruments 内存泄漏
    ios常用数学函数
    正则表达式
    view设置成圆角
    关于新浪微博注销后自动登录的问题
    根据视频地址获取某一帧的图像
    使用DES加解密
    实现通讯录的查询与删除
    iOS 动画效果
    iOS 文字下划线
  • 原文地址:https://www.cnblogs.com/baocx/p/11400893.html
Copyright © 2020-2023  润新知