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 |
指定需要排序的列 |
参数:指定待排序的文件列表
按照“:”分割后的第三列倒序排序:

Shell脚本基础与高级应用

本文详细介绍了Shell脚本的基础知识与高级应用技巧,包括数组操作、运算符使用、条件判断、流程控制等核心内容,同时深入讲解了Shell工具如cut、sed、awk和sort在文本处理中的强大功能。
1万+

被折叠的 条评论
为什么被折叠?



