Shell编程基础与实战指南

   日期:2024-12-29    作者:nbtlhg 移动:http://ljhr2012.riyuangf.com/mobile/quote/80204.html

图片引用链接:https://www.bilibili.com/video/BV16Z4y1N7R1?p=2&spm_id_from=pageDriver

Shell编程基础与实战指南

 

文件测试:、…
逻辑比较、算数运算: 、


1. 常用 Shell 类型

解释器类型介绍/bin/shBourne Shell,是 UNIX 最初使用的 shell/bin/bashBourne Again Shell,它是 Bourne Shell 的扩展,简称 bash,是 Linux OS 默认 shell,有灵活和强大的编辑接口,同时又很友好的用户接口,交互性很强/bin/nologin未登录解析器,Shell 设置为 /bin/nologin 适用于控制用户禁止登录系统的,有时候有些服务,比如邮件服务,大部分都用来接受主机的邮件而已,并不需要登录/bin/dash比 Bash 小,只需要较少的磁盘空间,对话性功能少,交互性差/bin/cshC 语言风格/bin/tcshC shell 扩展版本

2. 注释

 

3. 变量

3.1 系统环境变量

通过加载 Shell 配置文件(全局)中变量数据,共享给 Shell 所有 Shell 程序使用。

3.2 用户环境变量

Shell 环境加载个人配置文件中定义的变量。

3.3 查看环境变量
 
3.4 常用环境变量
 
3.5 自定义变量
 

+/- "-" 可用来指定变量的属性"+" 取消变量所设的属性。
a:array,设置为普通索引的数组。
A:array,设置为关联数组(map)。
r:readonly,将变量设置为只读。
x:export,设置变量为环境变量。
i:int,设置为整型变量。
f:function,设置为一个函数变量。

 
 
  1. 变量名由字母、数字和下划线组成,数字不能开头。
  2. 等号两侧不能有空格。
  3. 在 bash 环境中,变量的默认类型都是字符型,不能直接参与数值运算。
  4. 变量的值如果有空格,必须使用双引号
  5. 不能使用关键词作为变量名称。
3.6 查询变量
 
3.7 变量删除
 
3.8 定义只读常量
 
3.9 全局变量

仅限于父子shell。

在当前 shell 和子 shell 环境中都可以使用。

 
 
3.10 特殊变量
位置参数变量作用$nn为数字,$0 代表命令本身,$1-$9代表第一到第九个参数,十以上需要使用大括号 ${10}$*这个变量代表命令行中所有的参数, $* 把所有的参数看成一个整体$@这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待,空格分隔$#这个变量代表命令行中所有参数的个数,当命令行上没有任何参数时, $# 的值为 0${!#}返回命令行用到的脚本名$?函数返回值或者上一个 shell 命令的返回值$$当前 shell 进程 ID 号

4. Shell 配置文件

全局配置文件

 

个人配置文件

 
4.1 创建环境变量
 
4.2 shell 登录环境和非登录环境加载文件流程

需要登录执行的 shell 脚本环境变量配置在 /etc/profile、/当前用户/.bash_profile
不需要登录执行的 shell 脚本环境变量配置在:/当前用户/.bashrc、/etc/bashrc

4.3 使用 Shell 登录环境/非登录环境执行脚本
 
 
 

5. 字符串

5.1 字符串的三种格式

字符串表示使用双引号

 
 
 
 
5.2 获取字符串长度
 
5.3 拼接字符串
 
5.4 截取字符串

6 数组

6.1 数组的定义与遍历

索引数组

 

key-value 关联数组

 
5.2 数组的拼接
 
5.3 数组的删除
 

6. 内部/外部命令

 

内置命令会比外部命令执行的更快。
执行外部命令会调动磁盘 I/O,还需要 fork 出一个单独的进程来执行。
执行内置命令相当于调用当前 shell 进程的一个函数,还是在当前 shell 环境内,减少了上下文切换。

7. alias

 

8. echo

 

9. read

 
 

10. expr

整数运算、字符串处理

10.1 expr 整数运算
 
 

可以直接输出
引用变量使用 $,特殊字符需要转义,只能计算一个表达式

10.2 expr 字符串处理
 

11. 整数比较

注意空格

双括号内格式随意,有 情况, 表示赋值建议使用本方法,小数不能比较

12. 整数/浮点数/字符串比较

没有 情况,需要转义,可以

  • /
  • /

没有 情况,不需要转义,可以

  • /
  • /

字符串比较的特殊方法

  • 检查字符串长度是否为 0。
  • 检查字符串长度是否不为 0。
  • 字符串不空返回 true。

13. [[ ]] 和 [ ] 区别

  • 会将字符串拆开单个比较, 不会。

14. 文件测试

 
 

15. 布尔运算

16. 逻辑运算

17. 算数运算 (( )) / $[ ]

 
 

直接输出,里面直接使用变量名,特殊字符不需要转义,多个表达式赋值
需要获取值之后才能输出

 

赋值简单,特殊字符不需要转义
不能直接输出

 

特殊字符不需要转义
不能多表达式计算

18. bc 命令

 
 

内置变量

 

内置数字函数

 
 
 
 
 

19. case

case 只支持一部分正则表达式,且不需要每个 case 选项都有一个 break,和 C 不一样。

 

20. 循环

 
 
 
 
 

21. select

死循环,需要配合 break 使用。

 
 
 

22. 函数

系统函数:basename、dirname
自定义函数

 
 
参数说明$#传递到脚本或参数个数$*以一个单字符串显示所有参数$$脚本运行的当前进程号$!后台运行的第一个进程号$@与 $* 类似,使用时加引号,并在引导中返回每个参数$?显示最后命令的退出状态

shell 程序命令:运行命令时开启一个子进程运行命令。
函数:在当前 shell 环境中运行,没有开启进程。

类型符号作用标准输出重定向命令 > 文件覆盖方式命令 >> 文件追加方式标准错误输出重定向错误命令 2> 文件覆盖方式错误命令 2>> 文件追加方式正确输出和错误输出同时保存命令 > 文件 2>&1覆盖方式,正确输出和错误输出都保存到同一个文件中。命令 >> 文件 2>&1追加方式,正确输出和错误输出都保存到同一个文件中。命令 &> 文件覆盖方式,正确输出和错误输出都保存到同一个文件中。命令 &>>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中。

cut - 列 文本处理工具

可以切割指定列字符字节的数据

 
 
 
 
 

sed - 行 文本处理工具

stream editor,流编辑器,可对文本文件的每一行数据匹配查询之后进行增、删、改、查等操作。支持按行、字段、正则匹配文本。

读取文件中每行数据到缓存区,匹配后执行 sed 命令,将执行后的结果输出。

 
 
 
 
 
 
 
 

awk - 文本分析工具

默认分隔符为空格

 
 
 
 
 
 

sort - 排序工具


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号