青训营笔记

59 阅读2分钟

Shell脚本和编程 终端是用户输入、展示运算结果的硬件设备;tty是和终端等价;终端模拟器;shell是用来处理来自终端模拟器的输入,解释执行之后输出的结果给终端;bash是shell的一种具体实现。 shell不仅提供了与内核和设备交互的方式,还集成了一些今天软件开发中通用的设计模式,具备控制流程,循环,变量,命令查找的机制。 变量名=变量值(等号左右不能有空格) {page_size=1 page_num=2} 将命令复制给变量 _ls=ls 将命令结果赋值给变量 file_list=(lsa)默认字符串,不会进行+运算declareitotal=pagesizepagenum声明变量为整型lettotal=pagesizepagenum导出环境变量exporttotaldeclarextotal通过系统用户登录默认运行的shell,非登录交互运行shell,执行脚本运行非交互式shell双引号:部分引用,使用这种引用时,(ls-a) 默认字符串,不会进行+运算 declare -i total=page_size*page_num 声明变量为整型 let total=page_size*page_num 导出环境变量 export total declare -x total 通过系统用户登录默认运行的shell,非登录交互运行shell,执行脚本运行非交互式shell 双引号:部分引用,使用这种引用时,、'(反引号)、(转义符);单引号:完全引用,只原样输出;反引号:执行命令 管道 管道的作用是将前一个命令的结果传递给后面的命令,语法:cmd1|cmd2,要求:管道右侧的命令必须能接受标准输入,比如:grep命令,ls、mv等不能直接使用,可以使用xargs预处理;需要注意管道命令仅处理stdout,对于stderr会予以忽略 每个shell命令在执行时都会打开三个文件描述符,文件描述符0、1、2,分别对应stdin、stdout、stderr,这三个文件描述符默认指向终端输入、终端输出,改变这些描述符指向的行为叫做重定向 shell中提供了test、[、[[三种判断符号,可用于:整数测试、字符串测试、文件测试; 语法:test condition、[condition]、[[condition]];要注意中括号前后要有空格符;【和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串;中括号的变量,最好都是用引括号括起来[[更丰富,在整型比较中支持<、>、=,在字符串比较中支持=~正则。