2.脚本文件初识
—>1.Makefile—自动化构建和管理项目的文件见这篇<—
1.编程语言
编程语言分为2类,一类是编译型语言,将源文件经过编译得到可执行文件,该执行文件可以在特定平台上运行,其他平台则不行,因此是不跨平台的编程语言,但是效率也较高,经过编译得到可执行文件,每次要运行源文件直接运行该可执行文件即可,不用重新编译,除非有修改过,例如C/C++就是编译型语言;
另一类是解释型语言,这类语言利用解释器将所要运行的代码转换成机器码让计算机执行,不运行的代码部分则不转换,注意,这类语言都是一边运行一边转换,生成对应平台的机器码,因此可以跨平台,但是效率就不是很高,常见的有JavaScript,Python,Matlab,shell等。
脚本我的理解就是先在文件中写好一堆命令,运行这个文件时解释器将命令经过转换变成计算机能执行的机器码,让计算机按脚本里的命令一步一步执行,即命令的集合。
2.脚本解释器
脚本语言如Python,JS,Shell都是不需要编译的解释型语言,需要用到解释器进行转换,常见的解释器有dash,bash,csh,sh等,在Linux系统中可以在终端输入 cat /etc/shells看支持的解释器类型,一般会有多种可支持解释器,要查看当前系统用的是哪种解释器可以在终端输入echo $shell查看,默认是bash解释器。
3.脚本常用命令
3.1指定解释器
#!后面加解释器路径,例如#! /bin/sh,也可以不写,就按默认解释器来,一般Linux默认解释器是bash。
3.2注释
#就是注释符,C语言里是\。
3.3输入
相当于C语言里的scanf函数,脚本的输入命令是read,运行该命令时用户从键盘进行输入,输入完成后按回车完成输入,CPU读取缓冲区数据。
如果要将输入的数据放到一个变量里直接指定变量名即可,不需要提前定义变量,如:
3.4输出
相当于C语言里的printf函数,脚本的输出命令是echo,运行该命令时往标准输出里输出数据,即在显示器上显示。注意:如果是输出一个字符串且字符串里有空格此时需要加上双引号,否则输出会遇到空格停止。
3.5变量
不像C语言需要指定数据类型,脚本变量直接赋值即可,默认变量类型是字符串,引用对应变量的值时在变量名前加$符号,如果变量值是含有空格需要加双引号,而且如果使用echo输出某个变量的值,且这个变量值很长时需要加{ }修饰变量名。
3.6通配符
通配符是用来匹配筛选用的,就比如我们用ctrl+f打开pdf的查找功能会根据我们输入的关键字进行匹配筛选类似,常见的通配符如下:
3.7管道
类似输水管道将自来水从水厂输送到居民家里,管道就是将一个命令的输出作为另一个命令的输入,有两种格式:
- 1.cmd1 | cmd2 (命令1的输出作为命令2的输入)
例如:
- 2.cmd1 | xargs cmd2(命令1的输出作为命令2的参数)
例如:
例子中的grep是用于查找文件里符合条件的字符串,上面命令意思就是查找家目录下hello.c的文件,找到的文件作为输出或参数,这里grep输入就是参数一样的,查找文件里的world字符串。
3.8重定向
重定向就是把默认输入或者输出的位置变成指定位置,比如 ls 命令默认标准输出到显示器,我想输出到一个文件里就可以变成 ls >ma.text。常见重定向命令如下:
3.9反引号
反引号里的会被当成命令解释,比如 ls 命令是列出当前目录下文件,现在要输出"hells"这个字符串,命令即为echo “hells”,里面的ls 被当成了普通字符,假设要让解释器将ls当成命令的话就加个反引号。
3.10数值运算
脚本的变量类型默认是字符串,要实现数值运算可以用双括号,如下面例子所示:
3.11控制语句
类似C语言的循环分支语句等,脚本也有,只是语法规则不一样,这里以分支语句为例,其他的大家要用到时边用边学即可。
针对两种情况的分支语句格式:
针对多种情况的分支语句格式: