编程原理
1、编程介绍
[计算机只能识别二进制指令]
程序 = 指令 + 数据
根据服务的重心不同,我们分为面向过程编程,面向对象编程;
面向过程 -- 侧重指令
面向对象 -- 侧重数据
又根据程序翻译成二进制指令的方式不同,我们分为低级语言和高级语言;
低级语言 -- 汇编语言
高级语言 -- 由于编译方式不同分为:
解释型语言 -- 编译器 -- C、C++、java
解释型语言 -- 解释器 -- shell、perl、python
编程语言的执行方式:
1)顺序执行
2)循环执行 -- for、while、until
3)选择执行 -- 分支 if、case
2、shell脚本语言介绍
2、1shell脚本中的条件判断
整数条件判断
-eq // 等于
-nq // 不等于
-gt // 大于
-lt // 小于
-ge // 大于等于
-le // 小于等于
例:添加用户
1 #!/bin/bash 2 #添加用户 3 if id $* &> /dev/null;then 4 echo "这个用户已存在" 5 else 6 for i in $*;do 7 useradd $i 8 echo "123456" | passwd --stdin "$i" &> /dev/null 9 echo "$i这个用户添加成功" 10 done 11 exit 0 12 fi
2、2 优缺点
优点:调用os(操作系统)的命令行,来实现所有功能;
缺点:没有库调用(与python区别)
2、3 shell脚本
shell脚本包括:
1)命令
2)变量(全局变量、局部变量、本地变量、传参)
3)逻辑关系
关于shell脚本
#!/bin/bash --定义脚本解释器(必须写)
#!/usr/bin/python
/etc/shells --查看当前系统支持的shell程序
echo $SHELL --c查看当前会话的shell程序
/etc/passwd --制定了用户默认支持的shell程序(/sbin/nologin)
shell的执行
bash命令来执行脚本
-n //查看shell脚本的逻辑错误(注意:单词错误不算)
-x //逐行显示执行的脚本程序(方便排错)
3、变量
1)环境变量
2)局部变量
declare -- 定义变量类型
3)本地变量
local -- 在函数中使用
4)变量类型
数值型:
整型 int
浮点型 float
布尔型 blood
字符串:
普通字符及字符串
数组
5)编程语言的分类:
强类型语言 -- 数值必须被定义,才能进行处理或运算
弱类型语言 -- 编程语言可以自动识别变量类型
【*多态* 一个数据具有多个属性,而最后使用的属性取决于和它进行运算的数据】
6)传参
$? -- 上一条命令的执行状态 0 正确 1-255 错误
$1 $2 ... ${10} -- 命令后面传入脚本的数据,以空格为分隔符
$# -- 统计传参数量 ${$#} ?
$* -- 表示所有的传参,所有的传参以字符串形式进行输出
$@ -- 表示所有传参,将所有的传参以列表的形式进行输出
【工作中要对所有的传参进行操作的时候,就要考虑$*和$@】
7)定义变量格式:
NAME=VALUE (一个等号叫赋值,两个等号叫判断)
我们通过命令declare 定义变量类型
declare -i 整数 int() str()
declare -a 数组
8)变量命令:
下划线的方式指定变量名称
驼峰命名方式
4、test文件测试,条件判断
在脚本中,我们需要进行 语句分支; 说白了,就要做判断;判断就是使用test命令来实现;
4、1使用格式:
1)test [option] file
2)[ 条件语句 ]
4、2常见的test选项:
比较选项:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
判断选项:
-f 判断是否为普通文件
-d 判断是否为目录文件
-L 判断是否为连接文件
-r -w -x 判断文件是否具有 读 写 执行 权限
关联选项:
-o 或
-a 与
! 非
字符串判断:
= 判断两边的字符串是否相同
!= 不等于
-z 判断字符串是否存在
-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
+ - * / % **