zoukankan      html  css  js  c++  java
  • Shell:Day10

    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
                   数组值  --  数值
  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/why098/p/11401667.html
Copyright © 2011-2022 走看看