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

          

  

      

原文地址:https://www.cnblogs.com/Blockblogs/p/11545393.html