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(占位符、修饰符(注意:不能忘记回车\n))
   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
               数组值  --  数值

Shell:Day10的更多相关文章

  1. 环境变量、system(day10)

    一.环境变量 bash下的环境变量. 每个进程都默认从父进程继承环境变量 bash本身就是一个程序,这个程序运行的时候,bash进程 可以定义只能之自己这个进程中使用的变量,这种变量称为自定义变量. ...

  2. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  3. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  4. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  5. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  6. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  7. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  8. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  9. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

随机推荐

  1. Core + Vue 后台管理基础框架3——后端授权

    1.前言 但凡业务系统,授权是绕不开的一环.见过太多只在前端做菜单及按钮显隐控制,但后端裸奔的,觉着前端看不到,系统就安全,掩耳盗铃也好,自欺欺人也罢,这里不做评论.在.NET CORE中,也见过不少 ...

  2. 01-初识InfluxDB

    初识InfluxDB 1. InfluxDB介绍 时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能 ...

  3. MATLAB神经网络(5) 基于BP_Adaboost的强分类器设计——公司财务预警建模

    5.1 案例背景 5.1.1 BP_Adaboost模型 Adaboost算法的思想是合并多个“弱”分类器的输出以产生有效分类.其主要步骤为:首先给出弱学习算法和样本空间($X$,$Y$),从样本空间 ...

  4. C语言程序设计(十) 字符串

    第十章 字符串 字符串常量是由一对双引号括起来的一个字符串序列 字符串实际就是由若干个有效数字构成且以字符'\0'作为结束的一个字符序列 C语言没有提供字符串数据类型,因此字符串的存取要用字符型数组来 ...

  5. webpack学习(一):webpack的安装和命令行

    本教程可以学习到如下内容: 1.webpack的安装 2.利用webpack命令打包js文件 3.如何在js文件里面引用css并将css文件在页面里面生效 4.学习webpack相关的高级的一些参数, ...

  6. webpack资料,还需整理

    参考地址: https://github.com/ruanyf/webpack-demos#demo01-entry-file-source http://www.jianshu.com/p/4df9 ...

  7. Android NDK JNI 入门笔记-day04-NDK实现Hash算法

    * Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...

  8. 蓝桥杯vip 字符串对比

    蓝桥杯vip 字符串对比 题目如下 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei ...

  9. LeetCode--第180场周赛

    LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...

  10. Java高效编程:总结分享

    参考资料:慕课网:Java高效编程收费实战课程.博客园.CSDN.菜鸟教程以及其他文档. 篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了.如果你觉得那个点在项目中用得上可 ...