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