shell编程-->shell脚本:命令的集合
类比:
Shell(/bash)命令解释器:
- shell文件后缀为.sh
- 边翻译边执行
- 擅长文件处理,操作系统管理
- 开发效率高,执行效率低
C:
1、编译一次,执行效率高
2、擅长数据运算和数据处理
3、开发效率低
Chmod:改变文件权限
+x:给他一个执行权限
./:在linux系统中的意思是执行
echo的作用于printf相同,即可实现打印“hello world”
Linux下的文件权限
第一个
-:普通文件
d:目录 L:软链接(快捷方式) p(pipe):管道文件,给不同进程之间共享数据
b:块设备 S:网络套接字
c:字符设备,鼠标键盘屏幕等
权限:作者;组用户(批量用户,一个班的其他同学);其他用户
1:(硬链接)文件在硬盘上有几份,允许两个文件名关联一个文件内容
Linux Linux:作者和作者的分组
32:文件大小
10:35:文件最后更改的时间
Shell变量
1.环境变量(系统变量,在操作系统任意位置都能获取):env
Utf-8:unicode
在Linux中,一个汉字占三个字节
whereis语句,可以在Linux中检查有没有安装某个软件(除了a.out)
2.位置变量
argc是有几个元素,argv[]是装来装a.out后面元素的数组
$#与argc相同就是计数,区别是$#在计数的时候不算命令本身
$?怎么算对错呢
终端是一个正在运行的程序,pid就是一个程序编号,正在运行的程序编号
脚本是一个弱类型的语言
脚本中赋值,不需要给变量定义类型,默认就是字符串
3.shell脚本输入输出
输入
输出echo :“aaa,bbb,$a”:双引号会将$a,自动替换为值,‘aaa,bbb,$a’单引号原样输出
- "":打印字符串,遇到$变量则打印变量中的值
- ‘’:打印字符串,遇到$变量依然打印$变量
- ``(反单引号):将中间的字符串按照命令打印
*:通配符,表示当前目录下的所有
什么时候在变量前加$,什么时候不加:
读变量的时候要加$,写的时候不需要
#bc小数加减乘除
分支语句
- if语句
If条件
then
语句
else
语句
Fi(结束语句,代表if结束)
在脚本中,若test返回的结果为0,是真,非0为假
man 2:linux系统函数
Man 3:c库函数
equal:以数字相比较相不相等
Greater:大于
Sr0:光驱;sda:硬盘
2.Switch -case语法
有空格的地方,要与实例完全一致
循环语句
Seq:打印一个数字序列
- while循环的循环条件为真
- For循环不需要写自增,在范围内给了增加的条件,会自动进行+操作
- Until与while循环的格式是一样的,只不过until的条件为假,意为只有条件满足