3.编程原理
计算机只能识别二进制指令
程序 = 指令 +数据
1.编程介绍:
早期编程
驱动 硬件设备默认是不能使用的;
不同的厂家硬件设备之间需要进行指令沟通,我们需要程序来进行翻译,;
更趋近于硬件开发的工程师,要学习“汇编语言”;而“汇编语言”被厂家限制;C C++的底层就是“汇编语言”;
现在编程:
基于高级语言,以及超高级语言,更好的让程序员能够实现编程功能
编程语言的分类:
高级语言、超高级语言需要翻译成计算机可读的语言(二进制指令)
解释型:逐行翻译,逐行执行 sehll python
bash +x filename.sh
编译型: 一次编译,全部执行 c c++ c#
面向对象编程语言 对象就是数据 侧重于数据的编程语言
面向过程编程语言 侧重与指令的编程语言
编程语言的执行方式:
【一行一行的】
1、顺序执行
一行一行的执行
2、循环执行:*for(遍历)* while(循环条件) until(和while相反)
3、选择执行--分支 if *case*
2、shell脚本语言介绍
1、逻辑关系
练习:
#!/bin/bash
# 添加用户
if id $* &> /dev/null;then
echo "这个用户存在"
else
for i in $*;do
`useradd abc$i`
echo "123456" | passwd --stdin "abc$i" &> /dev/null
echo "添加成功"
done
fi
1、优点:调用os(操作系统)的命令行,来实现所有功能
2、缺点:没有库调用
3、shell脚本包括:1、*命令* 2、变量(全局变量、本地变量、局部变量、传参) 3、逻辑关系
shell脚本的第一句话:
#!/bin/bash --定义脚本解释器
/etc/shells -- 查看当前系统支持的shell程序
echo $SHELL -- 查看当前会话的shell程序
/etc/passwd -- 制定了用户默认支持的shell程序
shell的执行:
1、bash 命令来执行脚本程序
-n 查看shell脚本的逻辑错误(注意:单词写错不能查)
-x 逐行显示执行的脚本程序(方便排错)
2、授权 chmod +x 脚本名
使用全路径执行脚本即可
2、变量 是一段被命名的内存空间
环境变量
局部变量 declare命令 -- 定义变量类型
本地变量 local 在函数中使用,只在该函数中使用
变量类型:
数值型:
整型:int
浮点型:float
布尔值:0 1 (真true假false)
字符串:
普通字符及字符串
数组
编程语言的分类:
强类型语言 -- 数值必须被定义,才能进行处理或运算
弱类型语言 -- 编程语言可以自动识别变量类型
【多态 一个数据具有多个属性,而最后的属性取决于和它运算的数值的属性】
传参
$? -- 上一条命令的执行状态0正确1-255错误
$1 $2 ... ${10} -- 命令后面传入脚本的数据,以空格为分隔符
$# -- 统计传参数量${$#}
$* -- 表示所有传参,所有传参以字符串形式进行输出
$@ -- 表示所有传参,所有传参以数组形式输出
定义变量的格式:
NAME=VALUE
我们通过命令declare定义变量类型
declare -i a=10 整数
-a 数组
变量命名:
下划线的方式指定变量名称
驼峰命名方式
3、test文件测试、条件判断
在脚本中,我们需要进行语句分支;说白了,就是要做判断
判断就是用test命令来实现的;
使用格式:
1、test [option] file
2、[条件语句]
常见的test选项:
比较选项:
-eq =
-ne !=
-gt >
-ge >=
-lt <
-le <=
判断选项:
-f 文件
-d 目录文件
-L 链接文件
-r -w -x 读写执行
关联选项
-o 或
-a 与
!非
字符串判断:
= 判断两边的字符串是否相同
!= 不等于
-z 判断字符串是否存在
-n和-z相反 存在为真,不存在为假
4、逻辑运算符
与 && 两个命令都是真才为真,一个为假就是假
或 || 有一个命令是真就是真,两个都是假才是假
非 !=
这个逻辑运算前后对接的都是单独存在的命令
[$? -eq 0] && exit 0 || exit 1
5、算术运算
let 1+1
expr 1+1
$[1+1] 此时的[]不用加空格
$((1+1))
+ - * / % **
数值的判断用 -eq 字符串的判断用=😂