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