• shell——Day3


    a.sort排序

    默认排序按照升序,按照每行文件的首字母(数字)的ASCII表的顺序进行排序。

    [root@lsl ~]# vi b.txt
    user1
    user2
    a
    b
    1
    10
    6
    11
    5
    22
    c
    g
    [root@lsl ~]# sort -n b.txt  //按照数值大小写对输入信息进行排序
    a
    b
    c
    g
    user1
    user2
    1
    5
    6
    10
    11
    22

    例:分割passwd目录下第三列,进行p排序

    sort -t ":" -k3 -n /etc/passwd
    

     从图中可以看出文件按照 0 1 2 3 4 5进行排序

     例:统计重复值和非重复值

    vi c.txt   //在文件中输入多个重复值和非重复值进行测试
    a
    a
    b
    b
    b
    b
    b
    c
    g
    g
    g
    
    [root@lsl ~]# sort c.txt | uniq -c -d   //统计重复值
    

    [root@lsl ~]# sort c.txt | uniq -c -u

    注:sort 参数

    -n 按照数值大小排序

    -f 忽略字母大小写

    -t 指定分隔符(cut-d)

    -k 指定所取到的列

    -u 去重(连续相同的值)

     

    b.编程原理:

    1、编程介绍

    目的:让硬件设备实现人类指定的某些特定的功能

    硬件设备如何识别这些编程语言

    早期语言:basic

                      汇编语言

                      局限性,每个厂家都有自己硬件设备所能够识别的汇编语言格式

    高级语言:   C语言  C++ C#、Java、python、 go、perl、shell(更趋向于人类能够读写)

    编译:将人类能够识别的编程语言,翻译成计算机能够识别的语言

    根据编程方式分为:

    1)编译型:一次编译,全部执行

    2)解释性:编译一行,解释一行,执行一行

    程序=指令+数据

    2、shell脚本程序介绍

    优点:指令操作系统命令

    python的优点:具有大量的第三方模块,能实现任何功能(自动化运维方向)

    shell脚本的第一句话:

    #!/bin/bash //指定下面的内容用什么语言做解释

    cat /etc/shells 查看有哪些shell程序

    linux下每一个程序都有一个用户来启动

    用户分类:

    1、超级用户 root

    2、普通用户  1)可登录管理操作系统的用户

                          2)系统用户  --/sbin/nologin   用来启动该用户指定的程序

    cat /etc/shell   //查看当前系统支持的shell程序

    SHELL= /etc/bash  //默认的SHELL环境变量

    如何执行shell:

    1、/bin/bash  程序

    2、chmod +x程序  //给该程序赋予权限

    */全路径/程序.sh

    二者区别:第一种是在当前shell下运行的脚本程序

                      第二种新建子shell去执行程序

    c、变量

    1)基于变量特性支持的不同。我们将开发语言分为:

    1、强类型语言:变量必须被定义

    2、弱类型语言:语言能够自动识别变量类型

    编程语言分类:面向过程,针对指令;面向对象,针对数据

    变量分类:数值型 整形

                                  浮点型

                                  布尔类型        

                       字符型  普通字符集

                                    数组(遍历)

                        declare (用于定义数据类型)

    2)导入变量

    1、直接定义  a=1

    2、传参的方式 $0 $1 $2 ...${10}

    $0 这个程式的执行名字
    $n 这个程式的第n个参数值,n=1..9
    $* 这个程式的所有参数,此选项参数可超过9个。
    $# 这个程式的参数个数
    $$ 这个程式的PID(脚本运行的当前进程ID号)
    $! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
    $? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
    $- 显示shell使用的当前选项,与set命令功能相同
    $@ 跟$*类似,但是可以当作数组用
    

    3)变量的命令

    1、下划线:YUN_NAME

    2、驼峰:YUN | NAME

    4)test 文件测试,用于条件判断

     shell中进行判断时一般有两种判断方式:

    1、直接判断命令正确与否

    2、使用test去做判断

    注:使用了test做判断就必须加"[ ]"写法要注意问题,中括号前后需要加空格。

     例:产生0-99以内的随机数

    [root@lsl ~]# vi bash.sh
    #!/bin/bash
    #
    declare -i a=$RANDOM
    echo "$[$[$RANDOM%100]+1]"

    [root@lsl ~]# bash -x bash.sh //显示语句执行过程

    *test除了可以判断是否相等,还可以作为一下判断:

    a.数值判断:

    -eq 等于     -ge 大于等于   -le 小于等于  -gt 大于   -lt 小于  -ne 不等于

    b.字符串判断:

    -n 判断字符串长度是否不为空

    -z 判断字符串长度是否为空

     = 判断两边字符串是否相等

     !=判断两边字符串不相等

    c.文件判断:

    -d  -b  -c  -e(判断文件是否存在) -f  -L  -r-w-x

    d.多条件关联

    -e  1.sh -a -x 1.sh(-e是否为普通文件,-a-x执行权限)

    5)逻辑运算

    &&与     ||或       !非

    结构体: 初始条件 a=1  

                   while  循环体条件(a<10);do

                             循环体

                             条件控制语句 let a++

                             done

    6)算数运算

    +      -      *      /      %      //      **       =      +     =       -+

    算数格式:  $[1+1]

                     $((1+1))

                     let i++

                     expr 1+1

              

      

          

  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/Blockblogs/p/11545393.html
Copyright © 2020-2023  润新知