Shell2
1.Shell 中的数组
Shell 数组用括号来表示,元素用"空格"符号分割开
使用@ 或 * 可以获取数组中的所有元素
#获取数组的长度
执行脚本:
2.运算符
(1)“$((运算式))”或“$[运算式]” + , - , *, /, % 加,减,乘,除,取余
(2)expr + , - , \*, /, % 加,减,乘,除,取余 注意:expr运算符间要有空格
采用$[运算式]方式
3.条件判断
常用判断条件($?查询 返回0则ture 返回1则false)
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
例如:23是否大于等于22
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
例如:helloworld.sh是否具有写权限
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并是一个目录(directory)
例如:目录中的文件是否存在
4.流程控制(重点)
4.1 if 判断 (if后要有空格)
如果aaa.txt文件存在,往文件中写入bbb,如果不存在,创建aaa.txt文件,往文件中写入bbb
4.1 case 语句
使用case判断输入内容,如果输入1,输出aaa,如果输入2,输出bbb,如果输入其他,输出ccc
注意:case 相当于java中的switch
"1") 相当于switch 中的 case "1":
*) 相当于switch 中的default
;; 相当于switch 相当于break
结尾 esac
4.3 for 循环
计算1到100之间所有偶数的和
4.4 while 循环(注意:while后边有空格)
5.read读取控制台输入
read(选项)(参数)
选项: -p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。
参数: 变量:指定读取值的变量名
请在5秒之内输入要计算的数字(偶数)的和:
6.函数
6.1 系统函数
basename (basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来)
去掉后缀
dirname 文件绝对路径 (从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))
6.2 自定义函数
6.2.1第一种是带参数
6.2.2第二种是不带参数
6.2.3带返回值的函数,返回值只能是数子,并且数字只能再0~255之间
7.Shell工具(文本处理)
7.1 cut
(cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出)
cut [选项参数] filename
选项:
-f |
列号,提取第几列 |
-d |
分隔符,按照指定分隔符分割列 |
-c |
指定具体的字符 |
切割cut.txt第一列:
编写cut.txt:
在cut.txt文件中切割出qian
7.2 set
(sed是一种流编辑器,它一次处理一行内容 把当前处理的行存储在临时缓冲区中 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾)
sed [选项参数] 命令 filename
选项:
-e |
直接在指令列模式上进行sed的动作编辑。 |
-i |
直接编辑文件 |
命令:
a |
新增,a的后面可以接字串,在下一行出现 |
d |
删除 |
s |
查找并替换 |
将“xxxx”这个单词插入到cut.txt第二行下:
删除cut.txt文件所有包含xxxx的行:
将cut.txt文件中xi替换为qianxi:
7.3 awk
(把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理)
awk [选项参数] ‘pattern1{action1} pattern2{action2}...’ filename (只有匹配了pattern的行才会执行action)
pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
-F |
指定输入文件折分隔符 |
-v |
赋值一个用户定义变量 |
awk的内置变量
FILENAME |
文件名 |
NR |
已读的记录数 |
NF |
浏览记录的域的个数(切割后,列的个数) |
7.4 sort
(sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出)
sort(选项)(参数)
选项:
-n |
依照数值的大小排序 |
-r |
以相反的顺序来排序 |
-t |
设置排序时所用的分隔字符 |
-k |
指定需要排序的列 |
参数:指定待排序的文件列表
按照“:”分割后的第三列倒序排序: